为什么我的断点不工作?

我有断点设置,但Xcode似乎忽略它们。

首先,我同意早先的人们百分之百地说,关掉Load Symbols Lazily

我还有两件事要补充。

(我的第一个build议听起来很明显,但是有人第一次向我提出这个build议,我的反应就是这样的:“请来吧,你真的觉得我不会更好……哦。”)

  1. 确保您没有意外地将“活动构buildconfiguration”设置为“发布”。

  2. 在项目graphics树显示的“目标”下,右键点击目标,然后点击“获取信息”。 寻找一个名为“生成debugging符号”(或类似的)属性,并确保这是CHECKED(又名ON)。 此外,您可以尝试(也在目标>>获取信息中)find名为“debugging信息格式”的属性,并将其设置为“带dsym文件的矮人”。

目标>>获取信息下有许多其他属性可能会影响你。 寻找优化或压缩代码,closures这些东西(我假设你正在debugging模式下工作,所以这不是一个坏build议)。 此外,寻找像剥离符号,并确保也是closures的东西。 例如,对于Debug目标,“Strip Linked Product”应设置为“No”。

转到Xcodedebugging首选项。 确保没有select“加载符号懒惰”。

我只是有同样的问题(再次)。 经过三次检查“加载符号懒惰”和剥离和debugging信息生成标志,我做了以下几点:

  1. 退出Xcode
  2. 打开terminal窗口并cd到项目目录
  3. cd进入.xcodeproj目录
  4. 删除除.pbxproj文件(我有frank.mode1v3和frank.pbxuser)

您可以通过右键/选项 – 点击.xcodeproj软件包并select“显示软件包内容”,在Finder中完成相同的任务。

当我重新启动Xcode,我所有的窗口已重置为默认位置等,但断点工作!

在Xcode 7中,对我有用的是:

1)确保目标 – >scheme – >运行 – 处于debugging模式(发布)

2)确保选中“Debug executable”选项,如下所示:

在这里输入图像描述

对于Xcode 4.x:转至产品>debugging工作stream程,取消选中“debugging时显示反汇编”。

对于Xcode 5.x转到debugging>debugging工作stream程,并取消选中“debugging时显示反汇编”。

看到这个职位: 断点不工作在Xcode? 。 你可能会推“运行”而不是“debugging”,在这种情况下,你的程序没有在gdb的帮助下运行,在这种情况下,你不能指望断点工作!

另一个原因

在BuildSettings中将DeploymentPostprocessing设置为NO – 细节在这里

简而言之 –

激活此设置表示应删除二进制文件,并将文件模式,所有者和组信息设置为标准值。 [DEPLOYMENT_POSTPROCESSING]

在这里输入图像描述

对于Xcode 4:

 go Product -> Debug -> Activate Breakpoints 

Xcode(2.4.1)中的断点有很多问题。 我使用一个只包含其他项目的项目(如Visual Studio中的解决scheme)。 我发现有时候,除非在起始项目中至less有一个断点(即包含我的代码的入口点)的断点,否则断点根本不起作用。 如果唯一的断点是在“低级”项目,他们只是被忽略。

这也好像Xcode只处理断点操作时,如果您在包含源代码行的项目中断点处于断点时。

如果我尝试通过另一个项目删除或禁用断点,则该操作有时不起作用,即使debugging器指示它已经存在。 所以我会发现自己打破了禁用的断点,或者在我之前删除的(现在不可见的)断点上。

我认为问题可能是设备版本和Xcode不兼容。 尝试在运行iOS 5.0.1的iPhone 4S上进行debugging时出现此问题。 我仍然使用Xcode 3.2.5。 我在“pipe理器”窗口中select“使用此设备进行开发”,从手机中获取符号。 但是这个电话拒绝断点。 我的旧3GS 断点,相同的Xcode项目,相同的设置…只是不同的设备,它运行的iOS 4.0。 我想这是3.2.5中的Xcode错误,因为我有符号。 尝试了迄今为止发布的所有解决scheme之后,我决定解决我的问题,即继续升级到XCode 4.也许除非基本SDK至less与debugging系统一样高,否则无法进行有效的debugging。 也许这很明显 – 任何人都可以确认?

编辑:我会更新,当我可以确认这是真的。

您可以在下拉菜单中激活/取消激活断点 在这里输入图像描述

来到这个页面有相同的问题(在Xcode 6的C代码不停止在断点),上述解决scheme都没有工作(该项目实际上开箱即用,设置方面,任何debugging器设置的几率很小被设置为错误的值)…

在浪费了一些时间来减less这个问题后,我终于找出了罪魁祸首(为我的代码):

Xcode(/ LLVM)不喜欢Bison风格的#line预处理器命令。

删除它们解决了问题(debugging器停在我的断点处)。

为此,也为Xcode 6及以上版本确保断点状态button被激活(蓝色箭头状button):

在这里输入图像描述

我有我的断点不工作,然后完成生成/清理所有目标,让他们再次工作。

我还没有做Xcode,但我build议你禁用“Zerolink”和“Load Symbols Lazily”; 这将解决大多数问题。 无论如何Zerolink是一个憎恶。

在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 

我发现了这个问题。 不知怎的,“ 在debugging时显示反汇编 ”在我的XCode中被启用,导致了这个问题。 当我禁用它时,我的所有debugging器停在我的源代码中。

您可以在以下位置find它: Product->Debug Workflow->Show Disassembly在debugging时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 } 

要恢复,手动将我设置为零,然后按继续button。

它在XCode 6.3.1中发生了同样的事情。 我设法解决它通过:

  • 去查看– >导航器 – >显示debugging导航器
  • 右键单击项目根目录 – >移动断点 (如果select了用户选项)
  • (我也select了选项共享断点 ,即使我不确定是否有必要)。

完成这个更改后,我将移动断点选项设置回项目,并取消select“ 共享断点”选项,并仍然有效。

我不完全知道为什么,但这让我的断点回来。

设置断点时,右键点击,你应该得到几个关于如何处理断点的选项(loggingvariables和继续,暂停执行等)

还要确保在debugging首选项中没有select“Load Symbols lazily”。

(适用于Xcode 3.1,不确定过去/将来的版本)

还要确保应用程序的AppStore发行版也没有安装在设备上。

另一件要检查的事情是,如果你的debugging模式有一个“Entitlements”plist文件(可能是因为你正在做keychain的东西),确保plist文件有“get-task-allow”= YES行。 没有它,debugging和日志将被打破。

Xcode的断点似乎有3个状态。 如果你点击他们,他们会通过不同的设置。 深蓝色启用,灰色禁用,我有时看到一个淡蓝色,需要我再次点击断点,使其变成深蓝色。

除此之外,请确保使用debug命令而不是run命令启动它。 你可以通过点击选项+命令+返回,或从运行菜单中的去(debugging)选项。

我有Xcode 3.2.3 SDK 4.1断点随机失败。 我已经发现,如果你清理构build并使用构build下的触摸命令,他们再次工作。

这是我遇到的一个晦涩难懂的问题:如果您正在使用共享库(或插件),那么在启动时断点会变黄,这可能会导致您沮丧地敲击键盘并终止debugging过程。 那么不要这样做! 在应用程序加载库之前,符号不会被加载,此时断点将变为有效。 我遇到了一个浏览器插件这个问题… BP被禁用,直到我浏览到实例化我的插件的页面。

当我想debugging自定义可执行文件为Safari 5.1的Web插件时,我遇到了同样的问题。 它工作正常,直到从4.0.5升级我的Safari到5.1。 一旦我再次安装Safari 4.0.5,所有的断点开始工作,不用修改任何Xcode设置。

我相信一个项目也可能在断点方面被破坏。 例如,我有一个项目,它不会在前一个会话中logging的任何断点上断开。 我在这里首先写了这个

如果您使用的是颠覆版,只需将您的项目文件( )还原到上次知道debugging器正在工作的时间。

刚刚在XCode 4.2解决了这个问题,以上都没有帮助。 事情是(我不确定实际发生了什么,但也许这有助于某人):我的队友在SVN中创build了新的构buildconfiguration和更新的项目。 我有运行计划设置中设置的旧生成configuration,所以我的步骤是:

  1. 产品 – >编辑scheme…
  2. select“运行%project_name.app%”(或任何导致问题)
  3. 在构buildconfiguration组合中,从我的队友中select新的构buildconfiguration

就这样,断点又回来了。 希望这可以帮助。