首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用systemtap探测用户空间

使用systemtap探测用户空间
EN

Stack Overflow用户
提问于 2013-06-19 19:48:53
回答 1查看 1.9K关注 0票数 3

好吧,我正在尝试探索我自己在SDT标记上的应用。我写了一个systemtap脚本来探测它,但是systemtap在传递5次之前没有显示任何错误,然后在传递5次(开始运行)之后,它继续什么都不做。下面是我的带有SDT标记的C程序:

foo.c:

代码语言:javascript
复制
#include <sys/sdt.h>
#include <stdio.h>

    int main(void)
    {
      printf("Before Marker\n");
      DTRACE_PROBE(user_app, foo_start);
      printf("After Marker\n");
      return 0;
    }

我的systemtap脚本是:

probe_foo.stp

代码语言:javascript
复制
probe process("./user_app").mark("foo_start")
 {
  exit();
 }

我运行的命令是:

代码语言:javascript
复制
stap -v probe_foo.stp

这是我得到的:

代码语言:javascript
复制
Pass 1: parsed user script and 98 library script(s) using 217528virt/36580res/2976shr/34316data kb, in 190usr/30sys/222real ms.

Pass 2: analyzed script: 1 probe(s), 1 function(s), 0 embed(s), 0 global(s) using 218596virt/38164res/3424shr/35372data kb, in 10usr/0sys/13real ms.

Pass 3: using cached /root/.systemtap/cache/a6/stap_a6e78dea575657695c4456347007229d_990.c

Pass 4: using cached /root/.systemtap/cache/a6/stap_a6e78dea575657695c4456347007229d_990.ko

Pass 5: starting run.

在那之后,它会无限期地等待。我的内核版本是3.8.0,我使用的是fedora 18。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-19 20:48:27

这看起来很正常。没有迹象表明您曾经启动过./user_app二进制文件,因此系统探测从未命中,因此它也没有任何理由退出()。

试一试

代码语言:javascript
复制
stap -t probe_foo.stp -c ./user_app

其中'-c ./user_ app‘将运行给定的应用程序(并限制对其的探测,而不是系统范围的探测),而'-t’将在脚本关闭时给出总探测命中次数/次数。(因为您只有一个退出()的探测器,所以这个报告将是微不足道的。)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17190429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档