mcrash

trace

書式

usage: trace address

説明

カーネル内の関数バックトレースを表示します。 引数にはtask_structのアドレスを指定します (task_structコマンドで取得できます)。

traceコマンドは カーネルスタックとカーネル内の関数オブジェクトを解析して関数トレースを得ます。 プロセスごとの関数の呼び出しシーケンスと、それぞれの関数の引数を表示します。 多くの場合正しくトレースを取ることができますが、まれに失敗します。

traceとdisに関しては、 現状ではx86用のコーディングしかしていません。

関数

すべてのプロセスのトレースをとる関数 traceall を定義しています。 (これはとても便利!)

実行例

> trace c3b76000
PID = 1139
 c3b77df8  c0114dca  schedule+21a ()
[c3b77e20] c011f3d4  schedule_timeout+14 ()
[c3b77e4c] c02071ac  unix_stream_data_wait+ac (c3dc7a80,7fffffff)
[c3b77e84] c020738d  unix_stream_recvmsg+19d (c3fd6f04,c3b77f54,4,0,c3b77f08)
[c3b77ed0] c01c2321  sock_recvmsg+31 (c3fd6f04,c3b77f54,4,0)
[c3b77f38] c01c2428  sock_read+88 (c3d824e0,bffffbd0,4,c3d82500)
[c3b77f7c] c01388d6  sys_read+96 (0,bffffbd0,4,bffffbd0)
[c3b77fc0] c0108913  system_call+33 ()

> traceall
    ADDR S   PID   SID   UID  EUID       MM NAME             FLAGS
c02de000 R     0     0     0     0        0 swapper         
PID = 0
 c02dffc0  c0114dca  schedule+21a ()
[c02dffe8] c0106e59  cpu_idle+29 ()
[c02dfff4] c02e0717  start_kernel+157 ()

    ADDR S   PID   SID   UID  EUID       MM NAME             FLAGS
c12bc000 I     1     0     0     0 cbecc080 init             priv
PID = 1
 c12bdedc  c0114dca  schedule+21a ()
[c12bdf04] c011f43c  schedule_timeout+7c (?)
[c12bdf34] c0146686  do_select+206 (b,c12bdf90,c12bdf8c)
[c12bdf6c] c0146a29  sys_select+339 (b,bffffb60,0,0)
[c12bdfc0] c0108913  system_call+33 ()
    (略)


mcrash, Copyright (C) 2002,2003 ASANO Masahiro