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,2003 ASANO Masahiro |