2

私はSystemTapチュートリアルに従っており、セクション2.3 「トレース。演習」の演習1を実行しようとしています。この-Lオプションは機能しないようです。私はこのスクリプトを手に入れました:

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

端末に入力します:

$ stap -L PROBE t.stp

そして何も起こりません。

4

5 に答える 5

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

Systemtapは素晴らしいですが、ドキュメントは貧弱です。

于 2012-05-16T04:32:46.140 に答える
4

From man stapsystemtap*-1.7-2.fc15.x86_64RPMがインストールされている場合)

   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」はなく、後にプローブハンドラーもありません。

于 2012-05-16T16:10:40.210 に答える
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 *

[....]

于 2016-09-06T03:45:29.223 に答える
1
stap -L kernel.function("*nit*") | sort
于 2020-06-08T18:24:32.733 に答える
0

私が言ったことよりも多くの学んだ人々に追加するだけです:

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

通常のカーネルプローブの場合:

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

これが将来誰か他の人に役立つことを願っています!

于 2017-11-12T02:02:45.070 に答える