我设置了断点,但Xcode似乎忽略了它们。
首先,我同意100%与之前说过关闭Load Symbols Lazily
的人。
我还有两件事要补充。
(我的第一个建议听起来很明显,但有人第一次向我提出建议时,我的反应就是这样:“来吧,拜托,你真的觉得我不会更清楚......哦。”)
Target >>获取信息下的许多其他属性可能会对您产生影响。寻找诸如优化或压缩代码之类的东西并将其关闭(我假设您正在调试模式,因此这不是坏建议)。此外,寻找剥离符号之类的东西,并确保它也是OFF。例如,对于Debug目标,“Strip Linked Product”应设置为“No”。
使用XCode 9.4.1解决方案(在任何断点处都没有停止):
在构建目标 - >构建设置 - >优化级别:从“优化速度”切换 - >“无优化”(现在它速度较慢但有效)
这让我在Xcode 9中度过了令人沮丧的一天。它最终成为一个简单的调试设置。
Go Debug> Debug Workflow并确保关闭'Always Show Disassembly'。就那么简单。 :(
我在Xcode(2.4.1)中有很多断点问题。我使用的项目只包含其他项目(如Visual Studio中的解决方案)。我发现有时断点根本不起作用,除非在起始项目中设置了至少一个断点(即包含我的代码入口点的断点)。如果唯一的断点位于“低级别”项目中,则会被忽略。
如果你在包含断点所在的源代码行的项目中对断点起作用,那么Xcode似乎只能正确处理断点操作。
如果我尝试通过另一个项目删除或禁用断点,则该操作有时不会生效,即使调试器指示它有。所以我会发现自己打破了禁用的断点,或者我之前删除的(现在看不见的)断点。
我的断点不起作用,然后完成Build / Clean All Targets让它们重新工作。
我认为问题可能是设备版本和Xcode之间不兼容。尝试在运行iOS 5.0.1的iPhone 4S上进行调试时遇到此问题。我还在使用Xcode 3.2.5。我在“管理器”窗口中选择“使用此设备进行开发”,从手机中获取符号。然而,这款手机拒绝断点。我的旧3GS将断点,相同的Xcode项目,相同的设置......只是不同的设备,它运行iOS 4.0。我想这是3.2.5中的Xcode错误,因为我有符号。尝试了到目前为止发布的所有解决方案,我已经确定我的问题的解决方案是继续升级到XCode 4.也许你无法有效地调试,除非你的基本SDK至少与要调试的系统一样高。也许这很明显 - 任何人都可以证实吗?
编辑:当我确认这是真的时,我会更新。
删除我的Build文件夹解决了我的问题。
为此,以及Xcode 6及更高版本,确保断点状态按钮被激活(蓝色箭头状按钮):
这可能是发生这种情况的可能原因之一....转到产品>方案>编辑方案> ..在运行>信息>可执行文件下检查“调试可执行文件”。
在Xcode 4中
- Product menu > Manage Schemes
- Select the scheme thats having debugging problems (if only one choose that)
- Click Edit button at bottom
- Edit Scheme dialog appears
- in left panel click on Run APPNAME.app
- on Right hand panel make sure youre on INFO tab
- look for drop down DEBUGGER:
- someone had set this to None
- set to LLDB if this is your preferred debugger
- can also change BUILD CONFIGURATION drop down to Debug
- but I have other targets set to AdHoc which debug fine once Debugger is set
我发现了这个问题。不知何故,在我的XCode中启用了“在调试时显示反汇编”,这会产生该问题。当我禁用它时,我的源代码中的所有调试器都停止了。
你可以在调试时找到它:Product->Debug Workflow->Show Disassembly
。
您可以在下拉菜单中激活/取消激活断点
如果所有其他方法都失败了,您可以调用以下函数而不是断点:
void BreakPoint(void) {
int i=1;
#if !__OPTIMIZE__
printf("Code is waiting; hit pause to see.\n");
while(i);
#endif
}
要恢复,请手动将i设置为零,然后点击恢复按钮。
在XCode 6.3.1中,我发生了同样的事情。我设法修复它:
执行该更改后,我将Move breakpoints选项设置回项目,并取消选择Share breakpoints选项,仍然有效。
我不知道为什么,但这会让我的断点回来。
我尝试了以上所有的东西,但对我来说,只调试一次调试断点,然后激活它们。
设置断点时,右键单击,您应该获得有关如何处理断点的几个选项(日志变量和继续,暂停执行等)
还要确保未在调试首选项中选择“懒惰加载符号”。
(适用于Xcode 3.1,不确定过去/未来版本)
还要确保该应用程序的AppStore分发版还未安装在设备上。
要检查的另一件事是,如果您的调试模式有一个“Entitlements”plist文件(可能是因为您正在使用Keychain进行操作),请确保plist文件具有“get-task-allow”= YES行。没有它,调试和日志记录将被破坏。
Xcode中的断点似乎有3种状态。如果您点击它们,它们将经历不同的设置。暗蓝色已启用,灰色显示已禁用,我看到有时会出现淡蓝色,需要我再次点击断点才能使其变为深蓝色。
除此之外,请确保使用debug命令而不是run命令启动它。您可以通过选择+ command + return或运行菜单中的Go(调试)选项来实现。
我有Xcode 3.2.3 SDK 4.1断点会随机失败。我发现如果你清理构建并在构建下使用touch命令它们再次工作。
这是我遇到的一个模糊不清的问题:如果您正在使用共享库(或插件),您的断点将在启动时变黄,这可能会导致您挫败键盘并终止调试过程。好吧,不要那样做!在应用程序加载库之前,符号不会加载,此时断点将变为有效。我用浏览器插件遇到了这个问题... BP被禁用,直到我浏览了一个实例化我的插件的页面。
转到Xcode调试首选项。确保未选中“懒惰加载符号”。
当我想调试自定义可执行文件是Safari 5.1的Web插件时,我遇到了同样的问题。它工作正常,直到我的Safari从4.0.5升级到5.1。一旦我再次安装了Safari 4.0.5,所有断点都开始工作而不修改任何Xcode设置。
我刚刚遇到同样的问题(再次)。在三重检查“懒惰加载符号”并剥离和调试信息生成标志后,我执行了以下操作:
您可以通过右键/选项单击.xcodeproj包并选择“显示包内容”,在Finder中完成相同的任务。
当我重新启动Xcode时,我的所有窗口都重置为默认位置等,但断点有效!
对于Xcode 4.x:转到产品>调试工作流程并取消选中“在调试时显示反汇编”。
对于Xcode 5.x转到Debug> Debug Workflow并取消选中“Show Debuging时显示反汇编”。
看到这篇文章:Breakpoints not working in Xcode?。您可能正在推“运行”而不是“调试”,在这种情况下,您的程序没有在gdb的帮助下运行,在这种情况下,您不能指望断点工作!
另一个原因
在BuildSettings中将DeploymentPostprocessing
设置为NO - details here
简而言之 -
激活此设置表示应删除二进制文件,并且应将文件模式,所有者和组信息设置为标准值。 [DEPLOYMENT_POSTPROCESSING]
来到这个页面遇到同样的问题(Xcode 6中的C代码没有在断点处停止)并且上述解决方案都没有工作(该项目实际上是开箱即用的,在设置方面,所以任何调试器设置的机会都很小被设置为错误的值)...
在浪费了相当一段时间来减少问题之后,我终于想出了罪魁祸首(对于我的代码):
Xcode(/ LLVM)不喜欢Bison风格的#line
预处理器命令。
删除它们修复了问题(调试器在我的断点处停止)。
对于Xcode 4:
go Product -> Debug -> Activate Breakpoints