Xcode 中断_NSLockError()以调试。。。如何?
在调试过程中,控制台总是向我发送一条错误消息:“断开\u nslockeror()进行调试” 我的假设是:在XCode中,我必须出现某个breackpoint,以便调试器在发生此错误时停止Xcode 中断_NSLockError()以调试。。。如何?,xcode,debugging,Xcode,Debugging,在调试过程中,控制台总是向我发送一条错误消息:“断开\u nslockeror()进行调试” 我的假设是:在XCode中,我必须出现某个breackpoint,以便调试器在发生此错误时停止 如何进行此操作?1/从菜单中选择构建->构建和调试 2/单击“GDB”图标-您将切换到“调试器控制台” 3/按Control+C中断二进制文件。您将得到gdb提示 4/键入“b_NSLockError”并在设置断点后继续执行 (gdb) b _NSLockError Breakpoint 8 at 0x911
如何进行此操作?1/从菜单中选择构建->构建和调试 2/单击“GDB”图标-您将切换到“调试器控制台” 3/按Control+C中断二进制文件。您将得到gdb提示 4/键入“b_NSLockError”并在设置断点后继续执行
(gdb) b _NSLockError
Breakpoint 8 at 0x911db1a9
(gdb) c
Continuing.
5/您可以与GDB进行交互,就像它从控制台运行一样,即您可以再次按住Ctrl+C键并查看当前断点:
(gdb) info breakpo
Num Type Disp Enb Address What
8 breakpoint keep y 0x911db1a9 <_NSLockError+9>
(gdb)信息包
Num Type Disp Enb地址什么
8断点保持y 0x911db1a9
要在XCode中为您的项目自动执行此操作:
如上所述,调试器将破坏锁,从而导致死锁,因此您可以检查调用堆栈,并希望确定原始锁发生的位置。我有时发现,通过在GDB中运行Terminal.app来调试我的二进制文件更容易,即“GDB/path_to/app.app/Contents/MacOS/app”嗯。。。用我的方式做会容易得多,因为它将继续在调试会话中应用…命令'b\u nslockeror'与lldb相同。。。只是为了让这个答案与苹果最近的变化保持同步。