2

gdb 以外の MT プログラムでデッドロック スレッドをデバッグする方法は何ですか?

4

4 に答える 4

2

一部のプラットフォームでは、デッドロック検出ツールが、すでに観察されているデッドロックとまだ観察されていないデッドロック、およびその他のバグを見つけるのに役立つ場合があります。

Solarisでは、LockLintを試してください。
Linuxでは、HelgrindまたはDRDを試してください。

于 2009-07-05T16:43:01.427 に答える
0

または、インテル スレッド チェッカーを入手してください。良い仕事。

于 2009-07-05T17:34:04.783 に答える
0

私は常に、柔軟なロギング機能を作成したり、自分が取り組んでいるプロジェクトに移植したりすることに時間を費やしてきましたが、難しいバグを簡単なバグに変えることで、常に十分な成果が得られました。少なくとも、ログの前後にログを記録し、ロックされているオブジェクトとロックを実行しているスレッドを表示する関数またはメソッドにロック プリミティブをラップすることで、問題のあるスレッドを数分で特定することができました。もちろん、問題はまったく再現できます。

デバッガーの下でプログラムをロードすることは、実際にはプロセスがデッドロックした後に何が起こったのかを判断するためのかなり制限された方法です.これは私がはるかに役立つと思います。

于 2009-06-25T13:18:24.630 に答える
0

POSIX を使用している場合は、PTHREAD_MUTEX_ERRORCHECK を調査してみてください。

于 2009-06-25T13:12:58.103 に答える