打破_NSLockError()来调试......怎么样?

时间:2009-08-19 13:00:56

标签: xcode debugging

在调试期间,控制台总是向我发出一条错误消息:“中断_NSLockError()以调试”

我的假设是:在XCode中,我必须出现某个breackpoint,以便调试器在发生此错误时停止。

我该怎么做?

3 个答案:

答案 0 :(得分:41)

使用Xcode 4 GUI:

  1. 打开Breakpoints导航器(Command + 6或View> Navigators> Show Breakpoint Navigator)
  2. 点击左下角的“+”,然后选择“添加符号断点...”
  3. 在符号字段
  4. 中输入'_NSLockError'
  5. 在“模块”字段中输入“基础”
  6. 点击“完成”
  7. 如上所述,调试器将在锁定中断,导致死锁,因此您可以检查callstack并希望确定原始锁定发生的位置。

答案 1 :(得分:14)

1 /从菜单中选择Build - >构建和调试

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>

答案 2 :(得分:12)

要在XCode中自动为您的项目执行此操作:

  1. 在Xcode中,Option-Command-B打开Breakpoints窗口(或Run&gt; Show&gt; Breakpoints)。
  2. 如果显示“Double-Click for Symbol”,请双击...并粘贴“_NSLockError”。
  3. 点击窗口中的任何其他位置,您的新条目将自动更新(或仅手动添加)Module =“Foundation”(不含引号)
  4. 构建&amp;当你遇到自动检测到的死锁时,你会自动进入调试器。