调试机器人程序
程序不可避免地不会像我们期望的那样运行。发生这种情况时,有必要弄清楚该程序为什么会执行其所执行的操作,以便我们可以使它执行我们想要执行的操作。这种期望外的程序行为称为“错误”,而此过程称为“调试”。
调试器是用于控制程序流和监视变量以帮助调试程序的工具。本节将描述如何为FRC|reg|机器人程序设置调试会话。
备注
对于需要调试程序但不知道/没有时间学习如何使用调试器的入门用户,通常只需将相关程序状态打印到控制台即可调试程序。但是,强烈建议学生最终学习使用调试器。
运行调试器
按 Ctrl+Shift+P 并输入 WPILib
或单击 WPILib Menu Item 打开带有预填充的WPILib的命令面板。键入Debug并选择Debug Robot Code menu项以开始调试。该代码将下载到roboRIO并开始调试。
断点
“断点”是一行代码,调试器将在该代码行处暂停程序执行,以便用户可以检查程序状态。这在调试时非常有用,因为它允许用户在有问题的代码中的特定位置暂停程序,以确定程序在哪些地方偏离了预期的行为。
调试器将在遇到的第一个断点处自动暂停。
设定断点
在源代码窗口的左边距中(在行号的左边)单击以在用户程序中设置一个断点:红色小圆圈表示已在相应行上设置了断点。
使用打印语句进行调试
调试程序的另一种方法是在代码中使用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>`之类的工具来图形化分析数据。然后,这些相同的工具可以与相同的数据一起使用,以在以后为驱动程序提供操作员界面。
了解更多
要了解有关使用VS Code进行调试的更多信息,请参见`链接<https://code.visualstudio.com/docs/editor/debugging>`__。
VS Code`文章 <https://code.visualstudio.com/docs/editor/editingevolved>`__ 中提到的某些功能将帮助您了解和诊断代码问题。快速修复(黄色灯泡)功能对包括导入内容在内的各种问题很有帮助。
避免调试很多问题的最佳方法之一是进行单元测试。
验证您的机器人是否可以在:doc:模拟 </docs/software/wpilib-tools/robot-simulation/introduction> 中运行,也是避免在实际机器人上进行复杂调试的一种好方法。