我正在尝试从execve调用中打印环境。我是通过以下方式捕获的:
syscall::exec*:entry {
printf("%i %i %s %s\n", ppid, pid, execname, copyinstr(arg0));
}
但是我似乎无法说服dtrace arg2[0]
是可以打印的东西。在这种情况下如何获取envp
的内容?
答案 0 :(得分:1)
应该可以使用 curpsinfo 内置变量,其 pr_envp field来实现。但这并不容易,因为它是数组,并且dtrace不支持循环。您可能可以通过使用著名的newproc.d脚本并用 curpsinfo-> pr_envp 代替 curpsinfo-> pr_argv 来对其进行破解,但是您也应该做一些计数,即this-> argc-也许将其设置为较高的值?无论如何,请检查this question on serverfault的答复和讨论。我认为环境变量也是如此。