由于DTrace probe
在操作系统的kernel
空间执行,所以不能直接访问进程user space
的内容。通常要使用copyin
、copyinstr
这些函数把进程user space
的内容copy
出来。如果程序里的变量是个二级指针,就要相对麻烦一些。以下面程序为例(编译成32
位的程序,所以指针用uint32_t
):
#include <stdio.h>
void func(char **p)
{
*p = strdup("hello");
return;
}
int main(void)
{
char *p[......]