在使用copyin
和copyinstr
这两个函数时,要注意这两个函数所访问的地址空间一定要被应用程序已经访问过了。举个例子:
# dtrace -n syscall::open:entry'{ trace(copyinstr(arg0)); }' dtrace: description 's[......]
在使用copyin
和copyinstr
这两个函数时,要注意这两个函数所访问的地址空间一定要被应用程序已经访问过了。举个例子:
# dtrace -n syscall::open:entry'{ trace(copyinstr(arg0)); }' dtrace: description 's[......]
在使用DTrace时,可以通过uregs[]数组访问具体的寄存器。关于各个寄存器的具体的值,可以参考这篇文档:http://docs.oracle.com/cd/E23824_01/html/E22973/gkyeg.html,我就不一一列举了。需要注意的是,有4个通用的寄存器,可以在所有硬件平台上[……]
以下面程序为例,介绍如何查看进程的probe:
#include <stdio.h> void func(void) { printf("hello\n"); } int main(void) { while (1) {[......]
Max Burning的这篇文章:《Bruning Questions: How To DTrace poll(2) System Calls》(http://www.joyent.com/blog/bruning-questions-how-to-dtrace-poll-2-system-call[……]
在stackoverflow上有人问如何用DTrace访问程序的全局变量(http://stackoverflow.com/questions/11228352/dtrace-accessing-global-variables-from-application),答案也简单,只需知道全局变量的地址[……]