2012-05-15 51 views

回答

3
$ stap -L 'kernel.function("blahblah")' 

Systemtap是偉大的,但很差的文檔。

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」)' 等,有前沒有關鍵字 「探針」 和沒有探測處理程序之後。

0

你可以嘗試下面的例子。

獲取所有內核函數的列表。

$ stap -l'kernel.function(「*」)'|排序

kernel.function( 「vfs​​[email protected]/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(「[email protected]/build/linux-lts-xenial-Hu9lgy/linux-lts-xenial-4.4.0/fs/read_write.c:440」)$ file:struct file * $ BUF:字符* $計數:爲size_t $ POS:參數loff_t *

[...]

0

只是爲了添加到些什麼學問的人比我說:

stap -L 'module("module-name-here").function("*")' 

對於經常核探針:

stap -L 'kernel.function("*")' 

希望這有助於未來的其他人!