非常にまれなデッドロックをデバッグしようとしていますが、タイプ 1 (再帰的) の pthread_mutex の問題に絞り込みました。このミューテックスがどこから来ているのかを追跡したいのですが、私たちのコードはすべて通常のミューテックスを使用しているので、いつミューテックス タイプ == 再帰的であるかを検出して追跡することが理にかなっていると思いました。
pthread_mutex_lock に手動ブレークポイントを設定したり、スタック ポインターを介して pthread_mutex_t を逆参照したりして、その型を調べようとしましたが、これは何百万回も呼び出され、mutex 型 == 再帰のケースをキャッチするのに永遠に時間がかかります。
また、ライブラリを挿入し、pthread_mutex_lock を置き換えてミューテックス タイプにブレークポイントを設定できるようにしようとしましたが、ヒットしませんでした (これが pthread_mutex_lock へのすべての呼び出しをキャッチしているとは確信していませんでした)。
再帰型のミューテックスで pthread_mutex_lock が呼び出されるたびに、ウォッチポイント/条件付きブレークポイントを設定する方法がgdbにあるに違いないと感じていますか?
上記のヘルプをいただければ幸いです。前もって感謝します。