Как я могу заставить dtrace выполнять прослеженную команду с некорневым priviledges?

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 :-)

56
задан Gyom 10 July 2018 в 15:54
поделиться