3
嗯,我正試圖在SDT標記上探測我自己的應用程序。我寫了一個systemtap腳本來探測它,但systemtap顯示沒有錯誤直到通過5,然後通過5(開始運行)後,它只是無所事事。這是我與SDT標記C程序:使用systemtap探測用戶空間
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.
非常感謝,所以我需要先運行程序,然後使用stap -t probe_foo.stp ... –