我正在尝试调试具有多个线程的进程,并且我的一个线程卡住等待NSRecursiveLock
可用 - 由GDB
. 源代码写在Objective C
.
所以我要回答的一个大问题是,当这种情况发生时,谁在持有锁。我查看了进程中所有其他线程的调用堆栈,但没有发现任何线索。
这是GDB
我转储锁状态时看到的内容:
(gdb) p \*(NSRecursiveLock\*)0x4c0cf30 $24 = { `NSObject = {`
isa = 0xac94a3d0
}
members of NSRecursiveLock:
_priv = 0x0
}
如您所见,上面的输出信息量不是很大。
如何判断谁持有锁?