OS X не хватает linux strace
, но имеет dtrace
, который должен быть намного лучше.
Тем не менее, я пропускаю возможность простейшего отслеживания по отдельным командам. Например, в linux я могу написать strace -f gcc hello.c
для caputre всех системных вызовов, что дает мне список всех имен файлов, необходимых компилятору для компиляции моей программы (отличный memoize script построен на этом трюке)
Я хочу переносить memoize на mac, поэтому мне нужен какой-то strace
. Мне действительно нужен список файлов gcc
для чтения и записи, поэтому мне нужно больше truss
. Конечно, я могу сказать dtruss -f gcc hello.c
и получить несколько ту же функциональность, но тогда компилятор запускается с привилегиями root, что явно нежелательно (кроме огромного риска для безопасности, одна проблема заключается в том, что файл a.out
теперь принадлежит root: -)
Затем я попробовал dtruss -f sudo -u myusername gcc hello.c
, но это кажется немного неправильным и не работает в любом случае (я все время не получаю файл a.out
, не знаю, почему)
Вся эта длинная история пытается мотивировать мой первоначальный вопрос: как мне получить dtrace
для запуска моей команды с обычными пользовательскими привилегиями, точно так же, как strace
делает в linux?
Изменить: кажется, что я не единственный, кто задается вопросом, как это сделать: вопрос # 1204256 в значительной степени похож на мой (и имеет тот же субоптимальный ответ sudo:-)