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

Nob*_*bik 23 debugging xcode

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

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

我该怎么做?

小智 41

使用Xcode 4 GUI:

  1. 打开"断点"导航器(Command + 6或"视图">"导航器">"显示断点导航器")
  2. 点击左下角的"+",然后选择"添加符号断点..."
  3. 在符号字段中输入'_NSLockError'
  4. 在"模块"字段中输入"基础"
  5. 点击"完成"

如上所述,调试器将中断锁定,从而导致死锁,因此您可以检查callstack并希望确定原始锁定发生的位置.


dic*_*ciu 14

1 /从菜单中选择Build - > Build and Debug

2 /单击"GDB"图标 - 您将切换到"调试器控制台"

3 /按Control + C中断二进制文件.您将获得gdb提示.

4 /键入"b _NSLockError"并在设置断点后继续执行.

(gdb) b _NSLockError
Breakpoint 8 at 0x911db1a9
(gdb) c
Continuing.
Run Code Online (Sandbox Code Playgroud)

5 /您可以像从控制台运行一样与GDB进行交互,即您可以再次按Ctrl + C查看当前断点:

(gdb) info breakpo
Num Type           Disp Enb Address    What
8   breakpoint     keep y   0x911db1a9 <_NSLockError+9>
Run Code Online (Sandbox Code Playgroud)


Sim*_*ide 13

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

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