为啥 Xcode 断点不起作用?

Posted

技术标签:

【中文标题】为啥 Xcode 断点不起作用?【英文标题】:Why aren't Xcode breakpoints functioning?为什么 Xcode 断点不起作用? 【发布时间】:2010-09-09 01:13:57 【问题描述】:

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

【问题讨论】:

产品清洁帮了我 ***.com/a/56036683/1522584 我必须完全重启我的电脑才能让它们再次工作,但现在它们出现了超级错误。我正在使用 xcode 10.2.1。 Xcode 11,重新启动并清理 Xcode 不工作,重新启动 Mac 不工作。删除设备上的应用程序并重建可修复此问题。希望这对某人有所帮助 【参考方案1】:

转到 Xcode 调试首选项。 确保没有选择“懒加载符号”。

【讨论】:

不幸的是,Xcode 6 中没有“调试”首选项,文档中也没有出现“懒惰”。叹息。 好吧,现在我在 XCode 6 中找不到 'Load Symbols Lazily' 选项【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

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

我还有两件事要补充。

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

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

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

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

【讨论】:

在 XCode 4.5.2 上我遇到了这个问题,原来是因为我启用了“链接时间优化”,所以这是另一件事要检查 要更改构建配置,请转到运行 - 信息下的产品 -> 方案 -> 编辑方案。对我来说,有效的是在该菜单中检查“调试可执行文件”。 劫持最佳答案以添加 Bison 语法似乎是断点不起作用的另一个(异国情调)原因(请参阅下面的答案)。希望能为遇到该问题的下一个人节省一些时间。 使用 ⌘Y 无意中切换断点激活也非常容易。因此,孩子们,请注意这一点。 要在 Xcode 8 中将“Active Build Configuration”设置为“Debug”而不是“Release”,请转到 Product -> Scheme -> Edit Scheme。点击左侧的运行。单击屏幕顶部的信息。在 Build Configuration 下拉菜单中,选择“Debug”。【参考方案4】:

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

【讨论】:

【参考方案5】:

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

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

【讨论】:

【参考方案6】:

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

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

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

【讨论】:

【参考方案7】:

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

【讨论】:

【参考方案8】:

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

【讨论】:

【参考方案9】:

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

【讨论】:

【参考方案10】:

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

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

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

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

【讨论】:

这行得通,但它会删除你所有的偏好...这应该在没有其他方法的情况下完成。 为我工作,谢谢。我想知道为什么 Xcode 这么烂。 Xcode 是 Apple 编写的最糟糕的软件。 哇,5 岁了。很难相信它仍然有效,而且它仍然是一个问题! 对我不起作用。我正在运行 Xcode 6.01。现在,当我构建时,我收到多个丢失的文件错误。我正在还原我的代码以解决问题。 只需要重新启动Xcode,我的情况是由于git版本控制,提交xcode用户界面状态数据时。【参考方案11】:

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

【讨论】:

请注意,get-task-allow 权利可能包含在 Xcode 托管配置文件中:imgur.com/a/qS27asO【参考方案12】:

看到这个帖子:Breakpoints not working in Xcode?。您可能正在推动“运行”而不是“调试”,在这种情况下,您的程序没有在 gdb 的帮助下运行,在这种情况下,您不能指望断点起作用!

【讨论】:

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

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

【讨论】:

【参考方案14】:

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

【讨论】:

【参考方案15】:

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

【讨论】:

【参考方案16】:

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

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

【讨论】:

【参考方案17】:

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

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

【讨论】:

【参考方案18】:

在 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

【讨论】:

【参考方案19】:

如果您使用的是 subversion,只需将您的项目文件()恢复到您上次知道调试器正在工作的时间。

【讨论】:

【参考方案20】:

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

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

就是这样,断点又回来了。希望这会有所帮助。

【讨论】:

【参考方案21】:

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

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

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

【讨论】:

【参考方案22】:

对于 Xcode 4:

go Product -> Debug ->  Activate Breakpoints

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

【讨论】:

【参考方案23】:

您可以在目标设置 Apple LLVM Compiler 4.1 代码生成部分中检查一项设置 生成调试符号 = YES

【讨论】:

【参考方案24】:

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

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

【讨论】:

【参考方案25】:

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

【讨论】:

【参考方案26】:

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

调试时可以在Product->Debug Workflow->Show Disassembly下找到。

【讨论】:

【参考方案27】:

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

【讨论】:

【参考方案28】:

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

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

【讨论】:

【参考方案29】:

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

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

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

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

【讨论】:

【参考方案30】:

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

【讨论】:

以上是关于为啥 Xcode 断点不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

lldb 断点命令在 XCode 8 中不起作用

断点在 xcode pod 文件中不起作用

Xcode 4.3.2 + iOS SDK 5.1 异常断点不起作用

Xcode 4,断点在 Mac OS 命令行工具的单元测试中不起作用

Xcode 11:未更新到应用程序或断点的代码更改不起作用

为啥图像文字在 Xcode 11.2.1 中不起作用?