131

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

4

51 回答 51

161

首先,我 100% 同意前面所说的 turn OFF Load Symbols Lazily

我还有两件事要补充。

(我的第一个建议听起来很明显,但第一次有人向我建议时,我的反应是这样的:“拜托,拜托,你真的认为我不会知道更好......哦。”)

  1. 确保您没有不小心将“Active Build Configuration”设置为“Release”。

  2. 在项目的图形树显示中的“目标”下,右键单击目标并执行“获取信息”。寻找一个名为“生成调试符号”(或类似)的属性,并确保它是 CHECKED(又名 ON)。此外,您可以尝试查找(也在 Target >> Get Info 中)名为“Debug Information Format”的属性并将其设置为“Dwarf with dsym file”。

Target >> Get Info 下还有许多其他可能会影响您的属性。寻找诸如优化或压缩代码之类的东西并将其关闭(我假设您正在调试模式下工作,因此这不是坏建议)。另外,寻找诸如剥离符号之类的东西,并确保它也处于关闭状态。例如,调试目标的“Strip Linked Product”应设置为“No”。

于 2008-09-15T23:34:46.150 回答
72

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

  1. 确保Target > Scheme > Run- 处于调试模式(是发布)

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

调试可执行文件

于 2015-11-17T09:51:40.990 回答
23

转到 Xcode 调试首选项。确保未选择“延迟加载符号”。

于 2008-09-15T17:10:45.560 回答
17

我只是有同样的问题(再次)。在三重检查“懒惰地加载符号”并剥离和调试信息生成标志之后,我做了以下事情:

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

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

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

于 2009-04-30T23:42:51.497 回答
14

可能的解决方案之一可能是 .... 转到 Product>Scheme>Edit scheme>..Under Run>info>Executable 检查“调试可执行文件”。

于 2019-03-27T14:53:59.753 回答
13

对于 Xcode 4.x:转到 Product>Debug Workflow 并取消选中“Show Disassembly When Debugging”。

对于 Xcode 5.x 转到 Debug>Debug Workflow 并取消选中“Show Disassembly When Debugging”。

于 2012-03-14T15:07:33.480 回答
12

另一个原因

DeploymentPostprocessing在 BuildSettings 中设置为 NO -详情请点击此处

简而言之 -

激活此设置表示应剥离二进制文件并将文件模式、所有者和组信息设置为标准值。[部署_后处理]

在此处输入图像描述

于 2015-10-13T10:11:19.750 回答
9

请参阅这篇文章:断点在 Xcode 中不起作用?. 您可能正在推动“运行”而不是“调试”,在这种情况下,您的程序没有在 gdb 的帮助下运行,在这种情况下,您不能指望断点起作用!

于 2009-11-26T07:35:01.747 回答
6

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

在构建目标->构建设置->优化级别:从“优化速度”->“无优化”切换(现在它更慢但有效)

于 2018-07-19T08:10:32.673 回答
5

这让我在 Xcode 9 中度过了令人沮丧的半天。它最终成为一个简单的调试设置。

转到“调试”>“调试工作流程”并确保“始终显示反汇编”已关闭。就那么简单。:(

于 2018-03-17T18:34:04.707 回答
5

在我的情况下解决它的方法非常简单,在 Xcode - Product - Clean Build Folder 之后是 Product - Run(不是 Play Xcode 按钮)。

(长按 Xcode 播放按钮切换到单元测试后,Xcode 11 -beta 4 出现问题)

于 2019-08-09T04:40:58.887 回答
4

对于 Xcode 4:

go Product -> Debug ->  Activate Breakpoints

这适用于所有 Xcode 版本。快捷键是:command key + Y.按此组合键激活/取消激活断点。

于 2012-12-03T13:56:18.010 回答
4

来到这个页面时遇到了同样的问题(Xcode 6 中的 C 代码没有在断点处停止)并且上面的解决方案都没有工作(该项目实际上是开箱即用的,设置方面,所以任何调试器设置的机会都很少设置为错误的值)...

在浪费了相当多的时间来解决问题之后,我终于找出了罪魁祸首(对于我的代码):

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

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

于 2014-10-16T07:05:05.693 回答
3

问题

  • 背景
    • Xcode13.0
      • 代码:Objective-C
  • 问题:添加断点,但不起作用
    • 在此处输入图像描述

(可能)原因及解决方案

  • 原因:Xcode 错误
    • 解决方案Product-> Clean Build Folder,然后重试调试(多次)
      • 在此处输入图像描述
  • 原因:禁用调试
    • 解决方案:启用它:Product-> Scheme-> Edit Scheme-> Run->Info
      • Build Configuration设置Debug
      • 选择/选择/启用:Debug executable
      • 在此处输入图像描述
  • 原因:禁用所有断点
    • 解决方案:启用它:调试面板->单击断点图标
      • 在此处输入图像描述
  • 原因:调试信息被优化
    • 解决方案:不优化
    • 单击项目 -> Build Settings-> Apple Clang - Code Generation-> Optimization Level->Debug确保是None[-O0]
      • 在此处输入图像描述

有关的

XCode 的符号断点不起作用

  • 背景

XCode 崩溃日志

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

添加 XCode 符号断点

-[__NSCFConstantString stringByAppendingString:]:

但断点不起作用

  • 解决方案

改成:

-[NSString stringByAppendingString:]

相关文档:stringByAppendingString:

于 2021-10-09T02:55:23.247 回答
2

Xcode(2.4.1)中的断点有很多问题。我使用一个只包含其他项目的项目(如 Visual Studio 中的解决方案)。我发现有时断点根本不起作用,除非在起始项目中设置了至少一个断点(即包含我的代码入口点的断点)。如果唯一的断点位于“较低级别”的项目中,它们就会被忽略。

如果您在包含断点所在的源代码行的项目中对断点执行操作,则似乎 Xcode 仅正确处理断点操作。

如果我尝试通过另一个项目删除或禁用断点,该操作有时不会生效,即使调试器表明它已经生效。因此,我会发现自己在禁用断点上或在我之前删除的(现在不可见的)断点上中断。

于 2008-09-18T12:34:05.917 回答
2

我的断点不起作用,然后完成了 Build / Clean All Targets 以使它们再次工作。

于 2009-02-09T00:56:32.747 回答
2

我认为问题可能是设备版本和 Xcode 之间的不兼容。我在运行 iOS 5.0.1 的 iPhone 4S 上尝试调试时遇到了这个问题。我仍在使用 Xcode 3.2.5。我通过在管理器窗口中选择“使用此设备进行开发”从手机中获取符号。然而,这款手机拒绝断点。我的旧 3GS断点,相同的 Xcode 项目,相同的设置......只是不同的设备,它运行 iOS 4.0。我猜这是 3.2.5 中的 Xcode 错误,因为我有符号。到目前为止,我已经尝试了这里发布的所有解决方案,我决定解决我的问题的方法是继续升级到 XCode 4。也许你无法有效地调试,除非你的基础 SDK 至少与要调试的系统一样高。也许这很明显 - 任何人都可以确认吗?

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

于 2011-12-06T12:13:59.377 回答
2

删除我的 Build 文件夹为我解决了这个问题。

于 2015-02-24T18:34:42.657 回答
2

为此,对于 Xcode 6 及更高版本,请确保断点状态按钮已激活(蓝色箭头状按钮):

在此处输入图像描述

于 2015-03-15T15:28:40.867 回答
2

如果所有其他方法都失败了,而不是断点,您可以调用以下函数:

void BreakPoint(void) {
    int i=1;
    #if !__OPTIMIZE__
    printf("Code is waiting; hit pause to see.\n");
    while(i);
    #endif
}

要恢复,手动将 i 设置为零,然后点击恢复按钮。

于 2015-04-11T09:18:24.807 回答
2

我在 XCode 6.3.1 中也发生了同样的事情。我设法通过以下方式修复它:

  • 转到查看->导航器->显示调试导航器
  • 右键单击项目根目录 -> 移动断点(如果选择了用户选项)
  • (我还选择了选项share breakpoints,即使我不确定是否有必要)。

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

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

于 2015-05-12T15:01:34.490 回答
1

在 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
于 2012-07-03T11:57:00.383 回答
1

我发现了问题。不知何故,在我的 XCode 中启用了“调试时显示反汇编”,这会产生该问题。当我禁用它时,我的所有调试器都停止在我的源代码中。

您可以在以下位置找到它:Product->Debug Workflow->Show Disassembly调试时。

于 2013-11-25T11:03:58.657 回答
1

您可以在下拉菜单中激活/禁用断点 在此处输入图像描述

于 2014-04-08T12:00:43.163 回答
1

我尝试了上述所有方法,但对我来说,只停用一次调试断点然后激活它们就可以了。

于 2017-08-08T11:11:54.730 回答
0

设置断点时,右键单击,您应该获得有关如何处理断点的几个选项(记录变量并继续,暂停执行等)

还要确保在调试首选项中未选择“延迟加载符号”。

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

于 2008-09-15T19:49:44.053 回答
0

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

于 2008-09-15T23:38:19.950 回答
0

Xcode 中的断点似乎有 3 种状态。如果您单击它们,它们将通过不同的设置。启用深蓝色,禁用灰色,有时我看到淡蓝色,这需要我再次单击断点以使其变为深蓝色。

除此之外,请确保您使用调试命令而不是运行命令启动它。您可以通过点击 option + command + return 或运行菜单中的 Go(调试)选项来做到这一点。

于 2008-09-15T23:39:04.893 回答
0

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

于 2008-09-18T20:04:23.807 回答
0

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

于 2009-04-27T05:58:42.267 回答
0

要检查的另一件事是,如果您的调试模式有一个“权利”plist 文件(可能是因为您正在使用钥匙串进行操作),请确保该 plist 文件具有“get-task-allow”= YES 行。没有它,调试和日志记录将被破坏。

于 2009-07-22T14:24:11.873 回答
0

我有 Xcode 3.2.3 SDK 4.1 断点会随机失败。我发现如果您清理构建并使用构建下的 touch 命令,它们会再次起作用。

于 2010-08-04T21:36:56.443 回答
0

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

于 2010-10-26T05:48:59.240 回答
0

当我想调试自定义可执行文件为 Safari 5.1 的 Web 插件时,我遇到了同样的问题。在将我的 Safari 从 4.0.5 升级到 5.1 之前,它运行良好。再次安装 Safari 4.0.5 后,所有断点都开始工作而无需修改任何 Xcode 设置。

于 2011-08-29T11:09:12.233 回答
0

如果您使用的是颠覆,只需将您的项目文件()恢复到您知道调试器正在工作的最后一次。

于 2012-10-01T20:03:19.600 回答
0

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

  1. 产品 -> 编辑方案...
  2. 选择“运行 %project_name.app%”(或任何导致问题的原因)
  3. 在构建配置组合中,从我的队友那里选择新的构建配置

仅此而已,断点又回来了。希望这可以帮助。

于 2012-10-19T12:21:38.263 回答
0

断点变黄的另一个原因是,如果您正在调试的应用程序二进制文件在首次运行后已被修改。在我的例子中,我在调试了一次程序后,在应用程序的 Contents/Resources 文件夹中添加了一个文件夹。在添加文件夹后的调试运行中,断点变为黄色并被忽略。我修改了我的程序:我进行了清理,构建,添加了文件夹,然后运行,一切都很好。

也许 Xcode(或 OS X)会创建并记住它自己的应用程序数字签名(进行数字签名),然后,感知到应用程序已被修改,拒绝尝试设置断点。通过在应用程序的第一次(调试)运行之前制作我的模组,数字签名是我的模组制作的。

所有这些都在使用 Xcode 3.2.2 的 OS X 10.6.8 上。

于 2012-10-26T00:16:37.783 回答
0

您可以在目标设置 Apple LLVM Compiler 4.1 Code Generation Section Generate Debug Symbol = YES 中检查一项设置

于 2013-02-12T07:05:35.870 回答
0

至少在 iOS 项目中会不时发生这种情况。为了修复它,我不得不重启 iOS 设备,退出 Xcode,然后重建项目。

于 2013-11-06T19:18:46.770 回答
0

同时拥有 Xcode 5 和 6 GM 会导致前者失去断点功能(Xcode 6 beta 还可以)。

我尝试了许多建议的方法,但最终放弃了,我现在只使用 Xcode 6。

于 2014-09-11T09:23:56.223 回答
0

在 Xcode 6.4 上,我需要重新启动我的 Mac。

(尝试启用/禁用断点、重启 iOS 设备、重启 Xcode、从工作区包中删除断点文件...)

于 2015-07-23T06:41:30.837 回答
0

在使用模拟器并将 Scheme Launch 设置为“等待可执行文件”时,我遇到了 Xcode 丢失断点的问题。将其更改为“自动启动”,断点就会恢复生机。

于 2015-08-18T21:04:05.567 回答
0

将我的 xCode 更新到版本 11.0 (11A420a) 时,我已经开始遇到这个问题。为了解决我安装了额外的模拟器版本 12.2 并将我的 iPhone 版本更新为 13.1 的问题。现在,在 iOs 模拟器和我的设备上的断点都会受到影响。

于 2019-09-26T12:13:21.130 回答
0

在我的情况下,我用我的构建覆盖了现有的应用商店构建。我删除了它,它现在可以工作了。

于 2019-11-05T12:15:19.427 回答
0

如果您使用 Xcode 版本 11.1 (11A1027) 确保您没有使用应用商店凭据(配置文件),因为在这种情况下将安装构建并且没有日志或调试器将起作用,我花了很多时间来弄清楚它出来了,Xcode 更新了。现在构建安装在设备上,没有任何警告。

于 2019-12-04T08:33:18.097 回答
0

对于那些在 Swift Package 中遇到问题并且断点不起作用的人。问题是财产的大小写敏感性pathtarget

包路径截图

路径设置为source, 问题修复一次 设置为Source

于 2022-01-27T08:51:06.900 回答
0

在 Xcode 13 上,当断点所在的代码从未被调用时,就会发生这种情况。

于 2022-02-10T17:18:05.513 回答
-1

我有 Xcode 版本 4.6.3 并且断点从未在包含项目的子组中工作。该项目将编译并运行良好;它甚至会附加到调试器并适当地吐出 NSLog 输出。

该问题与我的标题搜索路径有关。我让其中一些设置为“递归”而不是默认的“非递归”。将它们全部更改为“非递归”并更新所有相关导入适当地解决了问题。

于 2013-08-22T19:12:24.027 回答
-1

就我而言,我发现断点已被意外停用。您可以通过Debug->Activate Breakpoints [Cmd+Y] 再次重新激活它。如果您注意到灰色断点标记而不是通常的蓝色标记,则很可能是这种情况。

事实证明,您始终可以使用 Cmd+Y 键切换断点激活,您可能在没有注意到它的情况下点击了此组合键。本报告基于 Xcode 7.2。

于 2016-01-03T07:28:01.433 回答
-1

要尝试的事情:

1) 重新启动 xcode 2) 选择另一个模拟器 - 这是我的情况 3) 重新启动 mac。

如果这些都不起作用。然后查看项目设置。(这是最不可能的事情。)

于 2016-04-06T08:18:27.473 回答
-2

我有类似的问题。我重新安装了xcode。解决了我的问题

于 2016-12-14T12:10:02.420 回答