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

有帮助吗?

解决方案

首先,我100%同意之前那些说转的人 离开 Load Symbols Lazily.

我还有两件事要补充。

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

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

  2. 在项目的图形树显示中的“目标”下,右键单击目标,然后进行“获取信息”。查找名为“生成调试符号”(或类似)的属性,并确保已检查(又称ON)。另外,您可以尝试查找(也在 Target >> Get Info 中)一个名为“调试信息格式”的属性并将其设置为“带有 dsym 文件的 Dwarf”。

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

其他提示

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

1) 确保目标 -> 方案 -> 运行 - 处于调试模式(之前是发布模式)

2)确保选中“调试可执行文件”选项,如下所示:

enter image description here

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

我刚刚(再次)遇到了同样的问题。在三次检查“惰性加载符号”并剥离和调试信息生成标志后,我执行了以下操作:

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

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

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

对于 Xcode 4.x:转到产品>调试工作流程并取消选中“调试时显示反汇编”。

对于Xcode 5.x goto调试>调试工作流和取消选中“调试时显示拆卸”。

参见这篇文章: 断点在 Xcode 中不起作用?. 。您可能会按“运行”而不是“调试”,在这种情况下您的程序不会在 gdb 的帮助下运行,在这种情况下您不能指望断点起作用!

另一个原因

DeploymentPostprocessing 在 BuildSettings 中改为 NO - 详细信息在这里

简而言之 -

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

enter image description here

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

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

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

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

对于 Xcode 4:

go Product -> Debug ->  Activate Breakpoints

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

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

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

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

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

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

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

我的断点不起作用,然后完成“构建/清理所有目标”以使它们再次工作。

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

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

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

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

enter image description here

在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 调试时。

您可以在下拉菜单中激活/禁用断点enter image description here

如果一切都失败了,您可以调用以下函数来代替断点:

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 中我也发生了同样的事情。我设法通过以下方式修复它:

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

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

我不知道为什么,但这让我的断点恢复了。

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

这可能是发生这种情况的可能原因之一。...转到产品>“方案”>“编辑方案”> ..在运行> Info>可执行检查“调试可执行文件”。

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

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

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

另请确保设备上未安装该应用程序的 AppStore 发行版。

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

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top