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

OS X не хватает Linuxstrace, но это имеетdtrace что должно быть намного лучше.

Однако мне не хватает возможности выполнять простую трассировку по отдельным командам. Например, на Linux я могу написатьstrace -f gcc hello.c для блокировки всех системных вызовов, что дает мне списоквсе имена файлов, необходимые компилятору для компиляции моей программы (отлично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?

Изменить: кажется, что я не единственный, кто задается вопросом, как это сделать: question# 1204256 во многом совпадает с моим (и имеет такой же субоптимальный ответ sudo :-)

Ответы на вопрос(7)

Ваш ответ на вопрос