【问题标题】:How to access return value from user-space probing with systemtap如何使用 systemtap 访问用户空间探测的返回值
【发布时间】:2015-10-05 22:38:10
【问题描述】:

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

我试试

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

但是出错了

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

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

【问题讨论】:

    标签: systemtap


    【解决方案1】:

    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)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-11
      相关资源
      最近更新 更多