是否可以在Xcode下的malloc_error_break
上设置自动(或永久)断点? (如果它在Xcode中,我错过了它,请指出它)。我想让它在Xcode下无处不在 - 从GDB到LLDB,再到新老项目。我真的很喜欢它在设备上工作,但这可能是伸展的(it appears something is broken设备上有malloc guard)。
我在想.lldbinit
可能会有所帮助,但是LLDB会杀死这个想法。看来LLDB不尊重.lldbinit
中设置的断点(根据breakpoint list
)(http://lldb.llvm.org/tutorial.html)。 LLDB也忽略了.lldbinit-Xcode
中的断点(感谢Rob)。
.gdbinit
也可能有用,但我们可能会遇到Unable to set pending breakpoints in .gdbinit中讨论的错误。这是Apple,他们的质量保证流程完全失败,所以我不希望它被修复。
总而言之,以下内容不适用于此Mac(MacBook Pro,10.8)和Xcode(4.5.2):
riemann: jwalton$ cat ~/.lldbinit
# http://lldb.llvm.org/tutorial.html
# Not honored by LLDB
breakpoint set --name malloc_error_break
# Shot in the dark since the previous is not honored
breakpoint set pending --name malloc_error_break
riemann: jwalton$ cat ~/.gdbinit
set breakpoint pending on
set breakpoint malloc_error_break
set breakpoint pending auto
EDIT(2013/02/07):另见lldb equivalent of .gdbinit and future break?。
杰夫
答案 0 :(得分:3)
有一种简单的方法可以在Xcode中设置永久的,所有项目断点。
打开任何项目。转到Breakpoints导航器。在malloc_error_break
上创建一个符号断点。然后,右键单击导航器中的断点,并从弹出菜单中选择“将断点移动到”>用户。 Xcode将用户断点应用于所有项目。
有关视频,请参阅step 2 of this blog post。
LLDB有自己的初始化文件,名为...(鼓号)...... .lldbinit
。您也可以在那里设置断点。来自WWDC 2012的“Session 415 - 使用LLDB调试”视频从29m43开始深入讨论该文件。您甚至可以制作LLDB仅在Xcode下运行时才会加载的.lldbinit-Xcode
文件。
关于GDB待决断点问题,我没有任何建议。
答案 1 :(得分:1)
关于你的gdb断点,Mac OS X gdb与通用的FSF gdb略有不同,你应该没有b malloc_error_break
可以在那里有永久断点或最坏情况下使用fb malloc_error_break
(一个Apple-gdb特定的future-break
命令,使其明确。)
在Xcode 4.5中使用lldb时,有一个错误,即.lldbinit
文件中设置的断点未添加。与设计缺点不同的是,实际上,断点被添加到目标,并且在读取.lldbinit
文件时,lldb还没有设置目标。我认为格雷格克莱顿在几个月前修复了svn资源库中的lldb源代码,创建了一个占位符来应用这样的设置,从那时起安装在任何新创建的目标中。使用svn lldb源代码,将br s -n malloc_error_break
放在.lldbinit
中应该可以正常工作。