在Device上调试时,XCode / GDB在我的自动继续断点处停止

时间:2011-01-25 18:08:05

标签: iphone debugging gdb device breakpoints

我刚刚发现(感谢另一个非常有帮助的post)我可以使用GDB命令创建断点,将信息记录到GDB控制台,无论是在设备还是模拟器上进行调试。这就像NSLog,但更好的是你不必等待控制台赶上,你没有恼人的时间戳,你可以通过XCode断点视图在运行时打开/关闭它们。

非常好,我花了很多时间搞清楚如何最好地将消息和变量记录在一起。 (使用GDB命令po [NSString stringWithFormat: @"Your message: %d %@",variable,[[object expression] description]])以获得最大的多功能性。

在模拟器中一切都运行得非常好。当我最终进入设备调试时,我收到的信息很好,但是GDB在每个断点处都停止了,尽管我通过选中断点视图中的框将它们配置为自动继续。

我尝试在每个断点处添加一个“continue”命令,但它起作用了,但是GDB也开始喷出每个断点的信息,并在每一行之后告诉我“继续”。

我的问题:

  1. 这会发生在你身上吗?
  2. 我可以更改某些内容,以便自动继续也适用于设备
  3. 我可以告诉GDB不那么详细,只给我输出的信息吗?
  4. 请帮助!!

    大卫

3 个答案:

答案 0 :(得分:1)

我遇到了同样的行为。事实证明,XCode在预期的行上复制了断点。也许有一个错误,左键点击偶尔会添加一个隐藏的断点,而不是禁用?

解决方案是:

  1. 选择左侧导航器框架的“断点导航器”选项卡
  2. 手动查找重复的断点,或在导航器底部的搜索框中输入类名。 (请记住,列表的多个项目部分可能都包含同一个类的断点)
  3. 右键单击一个,然后选择编辑以确定它是否为继续。
  4. 右键单击不需要的断点并删除

答案 1 :(得分:0)

大卫,

您可能希望熟悉一些有用的控制台命令。

info b (lists all breakpoints)
ena (enables all breakpoints)
dis (disables all breakpoints)
ena X (enable breakpoint number X)
dis X (disable breakpoint number X)

GDB还支持条件断点:

cond X [condition]

并且,命令在命中断点时自动执行:

command X 

亚伦

答案 2 :(得分:0)

另一个非常有用的选项是watchpoint - 仅在给定表达式更改时中断。