gpt4 book ai didi

systemtap - 使用 systemtap 探测用户空间

转载 作者:行者123 更新时间:2023-12-04 02:53:03 25 4
gpt4 key购买 nike

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

foo.c :

#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

probe process("./user_app").mark("foo_start")
{
exit();
}

我运行的命令是:

stap -v probe_foo.stp

这是我得到的:

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。

最佳答案

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

试试看

stap -t probe_foo.stp -c ./user_app

'-c ./user_app' 将运行给定的应用程序(并限制对其进行探测,而不是在系统范围内进行探测),'-t' 将在脚本关闭时给出整体探测命中次数/次数。 (由于您只有一个执行 exit() 的探测器,因此该报告将是微不足道的。)

关于systemtap - 使用 systemtap 探测用户空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17190429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com