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

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

【问题讨论】:

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

标签: xcode breakpoints


【解决方案1】:

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

【讨论】:

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

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

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

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

【讨论】:

    【解决方案3】:

    首先,我 100% 同意前面的人所说的转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 下还有许多其他可能会影响您的属性。寻找诸如优化或压缩代码之类的东西并将其关闭(我假设您正在调试模式下工作,因此这不是坏建议)。另外,寻找诸如剥离符号之类的东西,并确保它也处于关闭状态。例如,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】:

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

                1. 退出 Xcode
                2. 打开一个终端窗口并 cd 到项目目录
                3. cd 进入 .xcodeproj 目录
                4. 删除 .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 中创建了新的构建配置和更新的项目。我在运行方案设置中设置了旧的构建配置,所以我的步骤是:

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

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

                              【讨论】:

                                【解决方案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 文件夹解决了我的问题。

                                                  【讨论】:

                                                    猜你喜欢
                                                    • 1970-01-01
                                                    • 2017-09-21
                                                    • 1970-01-01
                                                    • 2015-10-17
                                                    • 2012-11-16
                                                    • 2022-01-19
                                                    • 1970-01-01
                                                    • 2016-01-11
                                                    • 1970-01-01
                                                    相关资源
                                                    最近更新 更多