为什么Xcode断点不起作用?

144

我已经设置了断点,但是Xcode似乎忽略了它们。


5
“Product” → “Clean” 帮助了我。 - Alexander Bekert
https://stackoverflow.com/a/56036683/1522584 - Abhijith
我不得不对我的电脑进行完全重启才能让它们再次工作,现在它们非常不稳定。我正在使用Xcode 10.2.1。 - llamacorn
2
Xcode 11,重启和清理 Xcode 不起作用,重启 Mac 不起作用。在设备上删除应用并重新构建可以解决此问题。希望这能帮助到某些人。 - Randall Wang
面对相同的问题,我已经尝试了这里列出的所有方法!这一定是一个 bug。 - Kwnstantinos Nikoloutsos
52个回答

164

首先,我完全同意之前说要关闭“懒惰加载符号”的人的观点。

我有两个建议要补充。

  1. 确保您没有意外地将“Active Build Configuration”设置为“Release”。

  2. 在项目的图形树显示中的“Targets”下,右键单击您的目标并选择“获取信息”。查找名为“Generate Debug Symbols”(或类似)的属性,并确保其被选中(即开启)。此外,您还可以尝试找到一个称为“Debug Information Format”的属性,并将其设置为“Dwarf with dsym file”。

目标 >> 获取信息下还有其他可能会影响您的属性。查找像优化或压缩代码之类的内容并关闭它们(我假设您是在调试模式下工作,因此这不是坏建议)。另外,查找像剥离符号之类的内容,并确保它也已关闭。例如,对于Debug目标,“Strip Linked Product”应设置为“否”。


8
在 XCode 4.5.2 上,我遇到了这个问题,后来发现是因为启用了“链接时优化”,所以这是另一件需要检查的事情。 - taxilian
9
要更改构建配置,请转到“产品”->“方案”->“编辑方案”,在“运行-信息”下。对我来说有效的方法是在该菜单中勾选“调试可执行文件”。 - Jeffrey Sun
2
劫持最佳答案,补充说明Bison语法似乎是断点不起作用的另一个(奇特)原因(请参见下面的我的答案)。希望能为下一个遇到这个问题的人节省一些时间。 - Dave
2
同时,使用 ⌘Y 可能会不小心切换断点的激活状态,所以小伙伴们要注意了。 - dsgrnt
1
在Xcode 8中将“Active Build Configuration”设置为“Debug”而不是“Release”,请转到Product->Scheme->Edit Scheme。单击左侧的Run。单击屏幕顶部的Info。在Build Configuration下拉菜单中,选择“Debug”。 - Michael Osofsky
显示剩余11条评论

89

Xcode 7中,以下方法适用于我:

  1. 确保 Target > Scheme > Run 处于Debug模式(而非Release模式)

  2. 确保勾选了“调试可执行文件”的选项:

Debug executable


7
这正是我所经历的,复选框未被勾选。 - anoop4real
我也遇到了相同的问题。这个选项不应该默认启用吗(XCode 8.3)? 我们难道不都是乐于调试的开发人员吗? - dgmz
在Xcode 9.3中对我有效,如果您能提供另一个选项1的图像将会很棒。 - Kazi Abdullah Al Mamun
2
因为这个问题浪费了几个小时,我讨厌我的生活 =) - Mostfa Essam

23

前往Xcode调试首选项。 确保未选择“懒加载符号”。


14
很遗憾,在Xcode 6中没有“调试”偏好设置,并且“lazily”的文档中也没有出现。唉。 - Oscar
1
好的,现在我在XCode 6中找不到“延迟加载符号”的选项。 - RNA
你如何禁用符号的惰性加载? - ScottyBlades

18

我也遇到了同样的问题(又一次)。在三次检查“懒加载符号”和剥离调试信息以及生成标志后,我采取了以下措施:

  1. 退出Xcode
  2. 打开终端窗口并cd到项目目录
  3. cd到.xcodeproj目录
  4. 删除除.pbxproj文件之外的所有内容(我有frank.mode1v3和frank.pbxuser)

你可以通过在finder上右键/选项点击.xcodeproj包并选择“显示包内容”来完成相同的任务。

当我重新启动Xcode时,所有的窗口都恢复成默认位置等,但断点起作用了!


3
这个方法可行,但会删除你所有的偏好设置... 只有在其他方法都无效时才应该使用它。 - Rémi Doolaeghe
对我有用,谢谢。我想知道为什么Xcode这么烂。Xcode是苹果公司编写的最糟糕的软件。 - Duck
哇,那已经五年了。很难相信它仍然能够工作并且仍然是个问题! - Frank Szczerba
对我没用。我正在运行Xcode 6.01。现在构建时,我收到多个缺少文件错误。我正在还原我的代码以解决问题。 - Native_Mobile_Arch_Dev
只需要重新启动Xcode,我的情况是由于Git版本控制,在提交Xcode用户界面状态数据时出现的。 - Juan Boero
我在 Xcode 运行时删除了它。现在一切都保存了,断点也正常工作!+1 - אורי orihpt

14

解决这个问题的一个可能方法是......转到"产品 > 方案 > 编辑方案",然后在"运行 > 信息 > 可执行文件"下勾选"调试可执行文件"。


13

问题

  • 背景
    • Xcode: 13.0
      • 代码: Objective-C
  • 问题: 添加了断点,但是不起作用
    • enter image description here

(可能的)原因和解决方案

  • 原因: Xcode bug
    • 解决方案: Product ->Clean Build Folder, 然后尝试再次调试 (多次)
      • enter image description here
  • 原因: 调试被禁用了
    • 解决方案: 启用它:Product->Scheme->Edit Scheme->Run->Info
      • Build Configuration 设置为Debug
      • 选择/启用:Debug executable
      • enter image description here
  • 原因: 禁用所有断点
    • 解决方案: 启用它:调试面板 -> 单击断点图标
      • enter image description here
  • 原因: 调试信息被优化了
    • 解决方案: 不要优化
    • 点击Project -> Build Settings -> Apple Clang - Code Generation -> Optimization Level -> Debug,确保是None[-O0]
      • enter image description here

相关

XCode的符号断点不起作用

  • 背景

XCode崩溃日志

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSCFConstantString stringByAppendingString:]: nil argument'

添加 XCode 符号断点

-[__NSCFConstantString stringByAppendingString:]:

但断点无法正常工作

  • 解决方案

更改为:

-[NSString stringByAppendingString:]

相关文档:stringByAppendingString:


13
对于 Xcode 4.x: 前往“Product”>“Debug Workflow”,然后取消选中“调试时显示反汇编代码”。
对于 Xcode 5.x: 前往“Debug”>“Debug Workflow”,然后取消选中“调试时显示反汇编代码”。

12

另一个原因是

在BuildSettings中将DeploymentPostprocessing设置为NO - 详见此处

简言之 -

激活该设置表示应剥离二进制文件并将文件模式、所有者和组信息设置为标准值。[DEPLOYMENT_POSTPROCESSING]

输入映像描述


在升级到XCode 7之后,我的子项目中某些设置不知何故变成了“YES”,然后断点在子项目中就无法正常工作了。将其设置为“NO”后,问题得到了解决! - Maheswaran Ravisankar
这个方法只有在清理项目后才对我有效,因此需要进行完全重建。 - Ran

9

看这篇文章:Xcode中断点无法正常工作?。你可能在点击“运行”而不是“调试”,这样你的程序就没有使用gdb运行,因此你不能指望断点正常工作!


在Xcode 6.4中,现在只有一个运行按钮,它是否运行调试配置取决于当前选择的方案设置。 - user2067021

6

XCode 9.4.1 对我来说的解决方案(在任何断点处都没有停止执行):

在构建目标下,找到“构建设置” -> “优化级别”: 将“优化为速度”切换为“无优化”(现在会更慢但可以正常工作)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接