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