我正在研究Arduino Uno板最近我坚持使用我的代码,我无法使用ArduinoIde中的print()进行调试。所以我下载了AtmelStudio 6.2以进行调试。 当我设置断点并尝试构建时。我得到了警告 断点当前不会被点击。无法在目标上设置请求的断点。当前所选设备无法在运行时设置断点
请帮我解决这个问题
答案 0 :(得分:1)
以下变通办法使用Atmel Studio 7上的ATMega 168P和Atmel-ICE解决了同样的问题。
将以下汇编程序代码插入您想要断点的位置:
asm("break");
请注意,这是一个非常难看的解决方案,并不适合所有情况。它只适用于DEBUGwire并且在任何情况下都会使程序停止,即使没有连接程序员也是如此。
在不同的位置创建新项目也有帮助。我将所有必需的文件复制到新文件夹。新位置有一个短路径(C:\ atmel \ project ...)并且不包含空格,没有变音符号等。
答案 1 :(得分:1)
我遇到了类似的问题,不同之处在于我只能在项目的原始模块中找到断点(即我创建.cproj时已经存在的断点),我后来添加的任何模块都没有停止程序在断点上放置它们。
@pafodie提到的解决方案(2)解决了这个问题,但在这个过程中我找到了一种更简单的方法:只需删除.atsuo文件。它将在以后自动重新创建,问题消失(至少在您添加更多模块之前)。似乎AS6缓存了一些在添加新文件时没有更新的东西,或者它是错误的。
答案 2 :(得分:0)
如果使用外部Makefile,请确保在-g
中设置了CFLAGS
(调试)标志。
否则,Atmel Studio将不知道源文件如何与已编译的二进制文件相对应。
答案 3 :(得分:0)
我可能已经找到了至少对我有用的解决方案!您需要禁用编译器优化。在 Atmel Studio 中,
命中Alt + F7>工具链>优化{有2个优化 窗户,但只有一个适合鞋子}}>优化级别>无
我在这里找到了它,比我做的要好:https://www.microchip.com/webdoc/GUID-ECD8A826-B1DA-44FC-BE0B-5A53418A47BD/index.html?GUID-8FF26BD2-DBFF-48DD-91FB-8585D91A938D图5