如何使用stap -L选项?

时间:2012-05-15 09:02:00

标签: linux-kernel ubuntu-11.10 systemtap

我正在关注SystemTap教程,我正尝试从第2.3节 - "Tracing. Exercises"进行练习1。 -L选项似乎永远不会奏效。我有这个脚本:

probe kernel.function("*nit*"){}

我输入了一个终端:

$ stap -L PROBE t.stp

没有任何反应。

5 个答案:

答案 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("*")'

希望将来帮助其他人!