我正在关注SystemTap教程,我正尝试从第2.3节 - "Tracing. Exercises"进行练习1。 -L
选项似乎永远不会奏效。我有这个脚本:
probe kernel.function("*nit*"){}
我输入了一个终端:
$ stap -L PROBE t.stp
没有任何反应。
答案 0 :(得分:4)
$ stap -L 'kernel.function("blahblah")'
Systemtap很棒,但文档很差。
答案 1 :(得分:3)
从man stap
(安装了systemtap*-1.7-2.fc15.x86_64
RPM)
stap [ OPTIONS ] -l PROBE [ ARGUMENTS ]
stap [ OPTIONS ] -L PROBE [ ARGUMENTS ]
-l PROBE
Instead of running a probe script, just list all available probe
points matching the given single probe point. The pattern may
include wildcards and aliases, but not comma-separated multiple
probe points. The process result code will indicate failure if
there are no matches.
-L PROBE
Similar to "-l", but list probe points and script-level local
variables.
“探测点”指的是'kernel.function(“blahblah”)'等。之前没有关键字“probe”,之后没有探测处理程序。
答案 2 :(得分:1)
您可以尝试以下示例。
获取所有内核函数的列表。
$ stap -l'kernel.function(“*”)'|排序
kernel.function( “vfs_read@/build/linux-lts-xenial-Hu9lgy/linux-lts-xenial-4.4.0/fs/read_write.c:440”) [....]
获得内核功能&参数(局部变量)
$ stap -L'kernel.function(“*”)'| grep vfs_read
kernel.function(“vfs_read@/build/linux-lts-xenial-Hu9lgy/linux-lts-xenial-4.4.0/fs/read_write.c:440”)$ file:struct file * $ buf:char * $ count:size_t $ pos:loff_t *
[...]
答案 3 :(得分:1)
stap -L kernel.function("*nit*") | sort
答案 4 :(得分:0)
只是为了增加比我更多的学识渊博的人所说的话:
stap -L 'module("module-name-here").function("*")'
对于常规内核探测:
stap -L 'kernel.function("*")'
希望将来帮助其他人!