Как отследить программу с самого начала, не запуская ее от имени пользователя root

Я пишу инструмент, который обращается к DTrace, чтобы отследить программу, указанную пользователем.

Если мой инструмент использует dtrace -c для запуска программы в качестве подпроцесса DTrace, я не только не могу передать никакие аргументы программе, но и программа запускается со всеми привилегиями DTrace & # x2014; то есть с правами root (I & apos; м в Mac OS X). Это делает некоторые вещи, которые должны работать, ломаться, и, очевидно, делает множество вещей, которые не могут работать.

Другое известное мне решение - запустить программу самостоятельно, приостановить ее, отправивSIGSTOPпередайте свой PIDdtrace -pзатем продолжите, отправивSIGCONT, Проблема в том, что либо программа выполняется в течение нескольких секунд без отслеживания, пока DTrace собирает информацию о символах, либо, если я сплю несколько секунд, прежде чем продолжить процесс, DTrace жалуется, чтоobjc<pid>:<class>:<method>:entry не соответствует никаким зондам.

Есть ли способ, с помощью которого я могу запустить программу под учетной записью пользователя, а не с правами root, но при этом DTrace может отследить ее с самого начала?

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

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