5

pstack コマンドは、PID の下で実行されているすべてのスレッドのスタック トレースをどのように出力するのでしょうか?

プロセスはgdb環境内で実行されるため、gdbの方法とは多少異なる必要がありますが、プロセスの実行後にpstackが実行されます。

4

2 に答える 2

4

これは gdb と同じ一般的な考え方です。pstack は ptrace を使用します。これにより、外部プロセスが既知の pid にアタッチし、情報を出力できます (スタックは現在のレジスタを介して認識されます)。

それがどのように行われるかを正確に知りたい場合は、 に関する情報を探してくださいptrace

また、プロセスは実際には「gdb 内」では実行されません。を実行することで、問題なく gdb を実行中のプロセスにアタッチできますgdb executable pid

于 2010-07-07T10:25:55.657 に答える