调试机器人程序

程序不可避免地不会像我们期望的那样运行。发生这种情况时,有必要弄清楚该程序为什么会执行其所执行的操作,以便我们可以使它执行我们想要执行的操作。这种期望外的程序行为称为“错误”,而此过程称为“调试”。

调试器是用于控制程序流和监视变量以帮助调试程序的工具。本节将描述如何为FRC|reg|机器人程序设置调试会话。

备注

对于需要调试程序但不知道/没有时间学习如何使用调试器的入门用户,通常只需将相关程序状态打印到控制台即可调试程序。但是,强烈建议学生最终学习使用调试器。

运行调试器

Running the debugger via the Command Palette.

Ctrl+Shift+P 并输入 WPILib 或单击 WPILib Menu Item 打开带有预填充的WPILib的命令面板。键入Debug并选择Debug Robot Code menu项以开始调试。该代码将下载到roboRIO并开始调试。

断点

“断点”是一行代码,调试器将在该代码行处暂停程序执行,以便用户可以检查程序状态。这在调试时非常有用,因为它允许用户在有问题的代码中的特定位置暂停程序,以确定程序在哪些地方偏离了预期的行为。

调试器将在遇到的第一个断点处自动暂停。

设定断点

Where to place the cursor to create a breakpoint.

在源代码窗口的左边距中(在行号的左边)单击以在用户程序中设置一个断点:红色小圆圈表示已在相应行上设置了断点。

使用打印语句进行调试

调试程序的另一种方法是在代码中使用print语句,并使用Visual Studio Code或Driver Station中的RioLog查看它们。打印语句应谨慎添加,因为它们效率不高,尤其是在大量使用时。应将它们及时移除,因为它们可能导致循环超限。

System.out.print("example");
wpi::outs() << "example\n";

使用网络表进行调试

:doc:`网络表</docs/software/networktables/networktables-intro>`可用于与调试计算机共享机器人信息。可以使用您喜欢的仪表板或:ref:`OutlineViewer <docs/software/wpilib-tools/outlineviewer/index:OutlineViewer>`查看网络表。网络表的优点之一是可以使用:doc:`Shuffleboard </docs/software/dashboards/shuffleboard/getting-started/shuffleboard-tour>`之类的工具来图形化分析数据。然后,这些相同的工具可以与相同的数据一起使用,以在以后为驱动程序提供操作员界面。

了解更多

  • To learn more about debugging with VS Code see this link.

  • Some of the features mentioned in this VS Code article will help you understand and diagnose problems with your code. The Quick Fix (yellow light bulb) feature can be very helpful with a variety of problems including what to import.

  • 避免调试很多问题的最佳方法之一是进行单元测试。

  • 验证您的机器人是否可以在:doc:模拟 </docs/software/wpilib-tools/robot-simulation/introduction> 中运行,也是避免在实际机器人上进行复杂调试的一种好方法。