2

我想访问从 glibc 的“打开”函数返回的数据,例如文件名或文件描述符

我试试

probe process("/lib*/libc.so.*").function("open") { 
   fd = $fd
   filename = user_string($filename)
   printf("%d %d %s %s\n",pid(),ppid(),filename,fd)
}

但它错误

语义错误:未解析的目标符号表达式:malloc.stp:3:10 处的标识符 '$fd' 源:fd = $fd ^

Pass 2:分析失败。[人错误::pass2]

4

1 回答 1

6

系统open调用不带fd参数,所以.function探针自然不会找到它。如果您想查看从 中返回 open的文件描述符,请探测该.function("...").return点,然后$return.

probe process("/lib*/libc.so.6").function("open").return {
    fd=$return
    path=user_string(@entry($filename))
    printf("open %s -> $d\n", path, fd)
}
于 2015-10-05T14:38:10.963 回答