The easiest way is to use sudo:
sudo dtruss -f sudo -u $USER whoami
Other solution would be to run the debugger first and monitor for new specific processes.
E.g.
sudo dtruss -fn whoami
Then in another Terminal simply run:
whoami
Simple as that.
More tricky arguments you can find in the manual: man dtruss
Alternatively you can attach dtruss to the running user process e.g. on Mac:
sudo dtruss -fp PID
or similar on Linux/Unix by using strace:
sudo strace -fp PID
Another hacky trick could be to execute the command and right after that attach to the process. Here are some examples:
sudo true; (./Pages &); sudo dtruss -fp `pgrep -n -x Pages`
sudo true; (sleep 1 &); sudo dtruss -fp `pgrep -n -x sleep`
sudo true; (tail -f /var/log/system.log &); sudo dtruss -fp `pgrep -n -x tail`
Note:
-
first sudo is just for caching the password at the first time of running,
-
this trick doesn’t work for quick command lines like
ls, date
as it takes some time untill debugger will attach to the process, -
you have to type your command in two places,
-
you can ignore
&
to run the process to the background, if it’s already doing that, -
after finishing debugging, you’ll have to manually kill the background process (e.g.
killall -v tail
)