Xcode:malloc_error_break上的自动(永久)断点?

时间:2012-11-15 06:42:41

标签: xcode gdb breakpoints lldb

是否可以在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?

杰夫

2 个答案:

答案 0 :(得分:3)

更新

有一种简单的方法可以在Xcode中设置永久的,所有项目断点。

打开任何项目。转到Breakpoints导航器。在malloc_error_break上创建一个符号断点。然后,右键单击导航器中的断点,并从弹出菜单中选择“将断点移动到”>用户。 Xcode将用户断点应用于所有项目。

有关视频,请参阅step 2 of this blog post

ORIGINAL

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中应该可以正常工作。