traceコマンドは カーネルスタックとカーネル内の関数オブジェクトを解析して関数トレースを得ます。 プロセスごとの関数の呼び出しシーケンスと、それぞれの関数の引数を表示します。 多くの場合正しくトレースを取ることができますが、まれに失敗します。
traceとdisに関しては、 現状ではx86用のコーディングしかしていません。
> 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 ASANO Masahiro |