Как отследить программу с самого начала, не запуская ее от имени пользователя 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 может отследить ее с самого начала?