关于xcode:为什么我的断点不起作用?

Why aren't my breakpoints working?

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


首先,我与100%的人说过将Load Symbols Lazily设为OFF。

我还有两件事要补充。

(我的第一个建议听起来很明显,但是当有人第一次向我建议时,我的反应是这样的:"来吧,请,您真的以为我不会更好……哦。")

  • 确保您没有意外地将" Active Build Configuration"设置为" Release"。

  • 在项目的图形树显示中的"目标"下,右键单击目标并执行"获取信息"。查找一个名为" Generate Debug Symbols"(或类似名称)的属性,并确保已选中该属性(也称为" ON")。另外,您可以尝试查找(也在Target >> Get Info中)名为" Debug Information Format"的属性,并将其设置为"带有dsym文件的小矮人"。

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


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

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

    2)确保检查选项"调试可执行文件",如下所示:

    enter image description here


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


    我只是再次遇到了同样的问题。在对"懒惰地加载符号"进行三次检查并剥离和调试信息生成标志之后,我执行了以下操作:

  • 退出Xcode
  • 打开一个终端窗口并cd到项目目录
  • cd进入.xcodeproj目录
  • 删除除.pbxproj文件以外的所有内容(我有frank.mode1v3和frank.pbxuser)
  • 您可以通过右键/选项单击.xcodeproj捆绑包并选择"显示包内容"来在finder中完成相同的任务。

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


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

    对于Xcode 5.x
    转到"调试">"调试工作流",然后取消选中"调试时显示反汇编"。


    另一个原因

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

    简而言之 -

    Activating this setting indicates that binaries should be stripped and
    file mode, owner, and group information should be set to standard
    values. [DEPLOYMENT_POSTPROCESSING]

    enter image description here


    看到这篇文章:断点不能在Xcode中工作?在这种情况下,您的程序可能无法在gdb的帮助下运行,因此您可能会推" Run"而不是" Debug",在这种情况下,您不能指望断点起作用!


    可能的解决方案之一可能是....转到"产品">"方案">"编辑方案"> .."在运行下">"信息">"可执行文件"
    检查"调试可执行文件"。


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

    在构建目标->构建设置->优化级别下:
    从"优化速度"->"无优化"切换(现在速度较慢,但??可以运行)


    在我的情况下,解决该问题的方法非常简单,在Xcode-产品-清洁生成文件夹中,然后在Product-Run中(不是"播放Xcode"按钮)。

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


    这让我在Xcode 9中呆了半天。最终它是一个简单的调试设置。

    进入调试>调试工作流程,并确保"始终显示反汇编"已关闭。就那么简单。 :(


    来到此页面时遇到了同样的问题(Xcode 6中的C代码没有在断点处停止),并且以上解决方案均无效(该项目实际上是开箱即用的,从设置角度来说,调试器设置几乎没有机会进行设置)设置为错误的值)...

    在浪费大量时间减少问题之后,我终于找到了罪魁祸首(针对我的代码):

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

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


    对于Xcode 4:

    1
    go Product -> Debug ->  Activate Breakpoints

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

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

    进行更改之后,我将"将断点移动"选项设置回项目,并取消选择"共享断点"选项,但仍然可以使用。

    我不完全知道为什么,但这能使我恢复断点。


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

    1
    2
    3
    4
    5
    6
    7
    8
    void BreakPoint(void) {
        int i=1;
        #if !__OPTIMIZE__
        printf("Code is waiting; hit pause to see.\
    ");
        while(i);
        #endif
    }

    要继续播放,请手动将i设置为零,然后点击继续播放按钮。


    删除我的Build文件夹可以为我解决问题。


    我认为问题可能出在设备版本和Xcode之间。尝试在运行iOS 5.0.1的iPhone 4S上进行调试时遇到此问题。我仍在使用Xcode 3.2.5。通过在管理器窗口中选择"使用此设备进行开发",我从听筒中获得了符号。但是此电话拒绝断点。我以前的3GS将断点,相同的Xcode项目,相同的设置……只是不同的设备,并且它正在运行iOS 4.0。我猜这是3.2.5中的Xcode错误,因为我有符号。到目前为止,已经尝试了此处发布的所有解决方案,我已经决定解决我的问题的方法是继续升级到XCode4。也许除非您的基本SDK至少与要调试的系统一样高,否则您将无法有效地进行调试。也许这很明显-有人可以确认吗?

    编辑:当我可以确认这是真的时,我将进行更新。


    我的断点无法正常工作,然后完成"构建/清理所有目标"以使其重新工作。


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

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

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


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

    enter image description here


    我尝试了上述所有操作,但对我而言,只停用一次调试断点,然后将其激活即可。


    在Xcode 4中

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    - 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

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


    我发现了问题。在我的XCode中启用了"调试时显示反汇编"功能,从而造成了该问题。当我禁用它时,所有调试器都停止在源代码中。

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


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

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

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


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


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


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


    我没做过Xcode,但是我建议您禁用" Zerolink"和"懒惰地加载符号";可以解决大多数问题。无论如何,Zerolink是可憎的。


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


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


    我认为,就断点而言,一个项目也可能会遭到破坏。例如,我有一个项目,该项目不会在上次会话记住的任何断点处中断。我首先在这里写了这个


    另外,请确保该应用程序的AppStore分发版本也未安装在设备上。


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

    除此之外,请确保您使用debug命令而不是run命令启动它。您可以通过点击选项+命令+回车,或从运行菜单中选择执行(调试)选项来实现。


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

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


    以我为例,我用我的构建覆盖了现有的应用商店构建。


    将我的xCode更新为11.0版(11A420a)后,我已经开始遇到此问题。
    为了解决这个问题,我安装了附加的模拟器版本12.2,并将我的iPhone版本更新为13.1。
    现在,无论是在iOs模拟器上还是在我的设备断点上,都受到打击。


    如果您尝试了所有基本检查,请检查项目目标和项目设置中的"优化级别"。确保选择"无"进行调试。

    enter image description here


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


    如果使用的是Subversion,只需将项目文件(仅)还原到上一次知道调试器正在工作的时间。


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

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


    如果您使用的是Xcode版本11.1(11A1027),请确保您未使用应用商店凭据(供应配置文件),因为在这种情况下,将安装build,并且没有日志或调试器将起作用,这花费了我很多时间才能解决它出来了,更新的Xcode已经挤了。现在构建,无需任何警告即可将其安装在设备上。


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


    在Xcode 4和更高版本的情况下,*懒惰地*加载符号*似乎已被删除。所以请参考这篇文章

    简单而详细的说明对我有用。


    断点可能变为黄色的另一个原因是,您调试的应用程序二进制文件自首次运行以来是否已被修改。就我而言,在调试一次程序后,我将文件夹添加到了应用程序的Contents / Resources文件夹中。在添加文件夹之后的调试运行中,断点变为黄色,并且被忽略。我修改了程序:进行了清理,构建,添加了文件夹,然后运行,一切都很好。

    也许Xcode(或OS X)创建并记住了其自己的应用程序数字签名(未进行数字签名),然后感觉到应用程序已被修改,因此拒绝尝试设置断点。通过在应用程序的第一次(调试)运行之前制作我的mod,就可以使用我的mod进行数字签名。

    使用Xcode 3.2.2在OS X 10.6.8上进行的所有操作


    刚刚在XCode 4.2中解决了此问题,以上方法均无济于事。问题是(我不确定实际发生了什么,但是也许这对某人有帮助):我的队友在SVN中创建了新的构建配置并更新了项目。我在"运行方案"设置中设置了旧的构建配置,因此适合我的步骤是:

  • 产品->编辑方案...
  • 选择"运行%project_name.app%"(或任何引起问题的原因)
  • 在构建配置组合中,从我的队友中选择新的构建配置
  • 仅此而已,断点又回来了。希望这可以帮助。


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

    事实证明,您始终可以使用Cmd + Y键切换断点激活,您可能已经击中了此组合键而没有注意到它。该报告基于Xcode 7.2。


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

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


    尝试的东西:

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

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


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


    推荐阅读

      linux设置壁纸的命令?

      linux设置壁纸的命令?,图片,系统,电脑,照片,位置,终端,颜色,字体,单击,壁纸,

      linux恢复命令行设置?

      linux恢复命令行设置?,系统,工作,密码,信息,工具,地址,电脑,命令,情况,地方,

      linux命令提示设置?

      linux命令提示设置?,系统,工作,地址,信息,命令,软件,目录,管理,变量,文件,Lin

      linux设置man命令?

      linux设置man命令?,信息,系统,工具,工作,地址,命令,基础,地方,基本知识,技术

      linux参数设置命令?

      linux参数设置命令?,网络,系统,地址,工作,信息,管理,服务,名称,状态,命令,在l

      linux取消断点命令?

      linux取消断点命令?,系统,信息,软件,工作,电脑,服务,命令,目录,用户,进程,用x

      linux设置路由器命令?

      linux设置路由器命令?,网络,信息,代码,地址,电脑,工作,环境,系统,密码,路由,l

      linux设置根命令过短?

      linux设置根命令过短?,系统,工作,软件,地址,命令,代码,情况,管理,基础,位置,3

      linux设置路由器命令?

      linux设置路由器命令?,网络,信息,代码,地址,电脑,工作,环境,系统,密码,路由,l

      linux命令行设置字体?

      linux命令行设置字体?,系统,工具,终端,软件,电脑,数字,位置,等级,字体,命令,L

      linux命令快捷设置?

      linux命令快捷设置?,第一,系统,名称,终端,发行,首页,命令,快捷键,窗口,桌面,l

      linux命令设置扩展屏?

      linux命令设置扩展屏?,工具,系统,电脑,技术,软件,装备,情况,工作,命令,显示

      linux命令设置自启动?

      linux命令设置自启动?,服务,系统,信息,数字,检测,工具,状态,密码,跨行,脚本,l

      linux设置命令在哪里?

      linux设置命令在哪里?,系统,地址,代码,管理,密码,命令,位置,名字,服务,分行,l

      linux命令设置中文?

      linux命令设置中文?,系统,工作,数据,管理,设备,环境,标的,第一,网上,模式,lin

      设置网址命令linux?

      设置网址命令linux?,地址,系统,网络,代码,网址,密码,信息,电脑,管理,基础,lin

      linux设置日期命令?

      linux设置日期命令?,时间,系统,标准,命令,信息,大陆,国家,日期,时钟,时区,详

      linux设置时钟命令?

      linux设置时钟命令?,时间,系统,服务,图片,命令,网络,信息,风险,国家,大陆,lin

      linux命令长度设置?

      linux命令长度设置?,地址,工作,命令,管理,环境,系统,信息,目录,文件,参数,Lin