複数のスレッドでプロセスをデバッグしようとしていますが、スレッドの 1 つがNSRecursiveLock
が使用可能になるのを待ってスタックしています - によって確認されましたGDB
。ソースは に書かれていObjective C
ます。
したがって、私が答えようとしている大きな問題は、これが発生したときに誰がロックを保持しているかということです。プロセス内の他のすべてのスレッドのコール スタックを調べましたが、手がかりは見つかりませんでした。
これはGDB
、ロックの状態をダンプするときに表示されるものです。
(gdb) p \*(NSRecursiveLock\*)0x4c0cf30 $24 = { `NSObject = {`
isa = 0xac94a3d0
}
members of NSRecursiveLock:
_priv = 0x0
}
ご覧のとおり、上記の出力はあまり有益ではありません。
ロックを保持している人を特定する方法