【问题标题】:The breakpoint will not currently be hit. Unable to set requested breakpoint on target当前不会命中断点。无法在目标上设置请求的断点
【发布时间】:2015-08-09 08:47:42
【问题描述】:

我最近在 Arduino Uno 板上工作,我的代码卡住了,我无法在 ArduinoIde 中使用 print() 进行调试。所以我下载了 AtmelStudio 6.2 进行调试。 当我设置断点并尝试构建时。我收到警告 当前不会命中断点。无法在目标上设置请求的断点。当前选定的设备无法在运行时设置断点

请帮我解决这个问题

【问题讨论】:

  • 我发现通过在受影响的文件中导致编译错误(添加错字然后编译),在更正错字并重新编译后问题得到解决。

标签: debugging arduino-uno atmelstudio


【解决方案1】:

以下解决方法在带有 Atmel-ICE 的 Atmel Studio 7 上使用 ATMega 168P 解决了同样的问题。

1。汇编器

在需要断点的位置插入以下汇编代码:

asm("break");

请注意,这是一个非常丑陋的解决方案,并不适合所有情况。它仅适用于 DEBUGwire,并且在任何情况下都可以让您的程序停止,即使没有连接任何程序员。

2。创建新项目

在不同的位置创建一个新项目也有帮助。我将所有必需的文件复制到新文件夹中。新位置的路径很短(C:\atmel\project...),并且不包含空格、变音符号等。

【讨论】:

    【解决方案2】:

    我遇到了类似的问题,不同之处在于我只能在项目的原始模块(即我创建 .cproj 时已经存在的模块)中打断点,我以后添加的任何模块都不会让程序停止在放置在它们上面的断点中。

    @pafodie 提到的解决方案(2)可以解决这个问题,但在此过程中我找到了一种更简单的方法:只需删除 .atsuo 文件。稍后它将自动重新创建,并且问题消失了(至少在您添加更多模块之前)。似乎 AS6 缓存了一些在添加新文件时未更新的内容,或者执行不正确。

    【讨论】:

    • 帮助我现在使用 AS7,谢谢。 (我实际上删除了包含该 .atsuo 的整个 .vs 目录)
    【解决方案3】:

    如果使用外部 Makefile,请确保在 CFLAGS 中设置了 -g(调试)标志。

    否则,Atmel Studio 将不知道源文件如何与编译后的二进制文件相对应。

    【讨论】:

      【解决方案4】:

      我可能已经找到了一个可行的解决方案,至少对我来说是这样!您需要禁用编译器优化。在 Atmel 工作室

      Hit Alt+F7 > ToolChain > Optimization {有2个优化 windows 但只有一个适合鞋子} > 优化级别 > 无

      我在这里找到了,解释得比我做的更好:https://www.microchip.com/webdoc/GUID-ECD8A826-B1DA-44FC-BE0B-5A53418A47BD/index.html?GUID-8FF26BD2-DBFF-48DD-91FB-8585D91A938D 图 5

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-27
        • 2011-01-07
        • 2015-12-28
        • 1970-01-01
        • 2014-11-13
        相关资源
        最近更新 更多