如何在Arduino硬件上运行并调试Arduino代码?

37

有没有一种方式可以设置源代码级别的断点,在实际硬件上运行代码,并能够检查变量并继续执行?

3个回答

31

Visual Micro插件适用于免费的Microsoft Visual Studio 2015社区版,提供了一个针对Arduino的USB调试器。它允许你像你所描述的那样做。(不要忘记在IDE安装期间点击安装C++。)

该调试器支持串口、RF、蓝牙和一些Wi-Fi。它使得变量的值可以在Arduino运行时被监视或更新。图表和数据/引脚可视化以及监视、跟踪、断点等功能都包含在内。

输入图片说明

新闻:2016年1月还发布了针对Arduino Zero的GDB调试器版本。与串行/蓝牙调试器一样,GDB版本支持ino/cpp源代码,并且还支持对Arduino核心和库进行调试。它支持许多功能,例如:单步跳过、单步跳出、单步指令或源代码行、内存、寄存器、本地变量、实时表达式和堆栈跟踪。


你也能用这个工具来调试C和汇编吗? - Pyjong
@pyjong 默认的调试器使用串口或Wifi,这在c语言中无法工作,只能在.Ino和.cpp文件中工作。但是,如果您的板支持Gdb或您有硬件调试器,则有其他选项,请在我们的论坛中开启一个主题并提出问题。我们会回答并协助解决。谢谢。 - Visual Micro
这个工作需要硬件方面的一些要求,对吗?例如,它能在Arduino Uno上运行吗?(一个线索可能是Arduino调试器(代码项目)。) - Peter Mortensen
不需要额外的硬件,串行调试器使用与大多数用户用于上传其代码的相同简单USB连接。如果可用,它还可以使用软件串行或其他硬件串行。 Uno是一个很好的例子,usb /串行调试器可以派上用场,因为Uno的硬件调试可能很困难(特别是对于非专家)。但是,如果您有Uno的硬件调试器,则安装Visual Micro到Atmel Stdudio 7并使用它。确保阅读visualmicro.com上的AS7页面。 - Visual Micro

24

在Arduino上设置"源代码断点"的方法是添加串行输出,将你想要查看的值发送到串行监视器。

当您准备好后,下一步是转移到WinAVR、AVR Studio以及Atmel JTAG Mark II或Atmel Dragon。

这些程序和设备将允许您创建C代码并逐个步骤地执行代码并监视变量和寄存器。JTAG设备可以单步执行您的C代码或编译器创建的汇编代码。

请注意,高级嵌入式C编程仍与机器非常接近,您必须小心地逐个步骤执行中断例程、定时器例程和其他低级例程,因为很多时候会防止代码正常运行。


1
在Arduino上设置“源代码断点”的方法是添加串行输出,将要查看的值发送到串行监视器。如果您正在使用串行端口进行其他操作,会发生什么? - Jules
2
有许多选择之中,您可以通过使用AVR Studio和JTAG设备升级开发环境,也可以使用具有多个串口的Arduino mega,或者使用软件串口库。 - Jeff
我实际使用的解决方案是:在设备上粘贴一个LCD显示屏,并将其用于调试,而不是串行控制台,但这些选项也很有趣。以前没有接触过软件串行通信,但那看起来对未来的项目很有用... - Jules
液晶显示器(LCD)也是一个很好的选择!虽然需要更多的输入/输出和一些额外的代码,但如果你有液晶显示器的经验,它会带来其他选项所没有的好处。一旦你升级开发环境,加入JTAG,我相信你将不会再回头。 - Jeff

2

我通常将变量打印到串行监视器中以进行检查。这是我目前正在处理的一个示例:

# Setup
Serial.begin(9600);

# Loop
Serial.println(String(index) + " : " + String(total) + " : " + String(average));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接