5

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

请帮我解决这个问题

4

4 回答 4

2

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

1. 汇编器

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

asm("break");

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

2.新建项目

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

于 2016-01-09T19:38:22.717 回答
2

我有一个类似的问题,不同之处在于我只能在我的项目的原始模块中打断点(即那些在我创建 .cproj 时已经存在的模块),我以后添加的任何模块都不会让程序在断点处停止在他们。

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

于 2016-06-04T01:18:43.190 回答
1

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

点击 Alt+F7 > ToolChain > 优化 {有 2 个优化窗口,但只有一个适合鞋子} > 优化级别 > 无

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

于 2019-06-05T21:02:44.813 回答
0

如果使用外部 Makefile,请确保-g(debug) 标志设置在CFLAGS.

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

于 2018-08-08T14:59:52.210 回答