traceコマンドは カーネルスタックとカーネル内の関数オブジェクトを解析してトレースを得ます。 多くの場合正しくトレースを取ることができますが、まれに失敗します。
traceとdisに関しては、 現状ではx86用のコーディングしかしていません。
> trace c48bc000 PID = 8570 eip = c01105ce schedule+34e esp = c48bdde8 [c48bde44] c01101f3 schedule_timeout+17 () [c48bde68] c01f0cf3 wait_for_connect+133 (c424c840,7fffffff) [c48bdeac] c01f0de6 tcp_accept+82 (c424c840,2,c48bdee8) [c48bdec8] c0208068 inet_accept+30 (c41a87a0,c074fb40,2) [c48bdeec] c01d7616 sys_accept+66 (10,bffff87c,bffff878) [c48bdf94] c01d808e sys_socketcall+a6 () [c48bdfc0] c0106b9b system_call+33 () |
> traceall ADDR S PID SID UID EUID NAME FLAGS c0282000 R 0 0 0 0 swapper priv PID = 0 eip = c01105ce schedule+34e esp = c0283f80 [c0283fdc] c0105230 cpu_idle+48 () [c0283fec] c0105027 rest_init+27 () [c0283ff0] c0284805 start_kernel+ed () [c0283ff4] 1 ? ADDR S PID SID UID EUID NAME FLAGS c7eac000 I 1 0 0 0 init priv PID = 1 eip = c01105ce schedule+34e esp = c7eadea4 [c7eadf00] c011024f schedule_timeout+73 () [c7eadf28] c0139cc3 do_select+97 (b,c7eadfa8,c7eadfa4) [c7eadf60] c013a292 sys_select+436 () [c7eadfc0] c0106b9b system_call+33 () (略) |
mcrash, Copyright (C) 2002 ASANO Masahiro |