2017-09-21 11 views
0

Linuxで動作している間にスタックされたマルチスレッドプロセスがあります。しかし、私はpstack(で別名を作った)にマルチスレッド版を持っていません。したがって、gstack <pid>は私に何も提供していません。 (a)実行中のプロセスにgdbを付けるにはどうしたらよいですか?(b)実行中のプロセスのスレッドIDを知っていればthreadidからスレッドdを知ることができます。スタックされたプロセスの下で実行中のスレッドのために?Linuxでハングしたプロセス内の特定のスレッドのスタックトレースを表示する方法

+0

(a)少なくとも、gdbの基本的なマンページを読んでいますか?それ以外の部分については、GDBのヘルプページを読んでください。 – Sneftel

答えて

1

最初に、最適なデバッグのためにオプション-O0 -ggdbでコンパイルしてください。

あなたはGDBの下で実行することができた場合は、単に

# gdb ./yourbinary 

を実行し、ちょうど問題を待ちます。 。プロセスが行き詰まったとき、ちょうどあなただけの、GDBの下で実行することができない場合に

^C、あなたを押します。両方のケースで

# gdb --pid=<YOUR PID> 

、タイプinfo threadsを、あなたはすべてのあなたのスレッドが表示されます。次に、1つを選択すると、btなどが表示されます。

関連する問題