调试支持实时的应用程序
重要
这是 Azure Sphere(旧版)文档。 Azure Sphere(旧版)将于 2027 年 9 月 27 日停用,用户此时必须迁移到 Azure Sphere(集成)。 使用位于 TOC 上方的版本选择器查看 Azure Sphere(集成)文档。
使用随 Azure Sphere SDK 一起安装的 OpenOCD 和作为 ARM GNU 嵌入式工具链一部分安装的 GDB 版本调试 RTApps。
使用 Visual Studio 调试 RTApp
确保通过 USB 将设备连接到电脑。 在 “设置启动项 ”菜单中,选择 Azure Sphere 应用 (RT Core), 其中 Azure Sphere 应用 是当前支持实时的应用程序的名称或按 F5。
如果系统提示你生成项目,请选择“是”。 Visual Studio 编译支持实时的应用程序,创建映像包, 将其旁加载 到开发板上,并在调试模式下启动它。 “旁加载”意味着应用程序通过有线连接直接从电脑传送,而不是通过云传送。
请注意“视图>输出>显示输出”输出中的映像 ID:生成输出:准备好创建部署时,需要知道映像包的路径。
默认情况下,“输出”窗口显示设备输出的输出。 若要查看调试程序中的消息,请从“显示输出来源:”下拉菜单中选择“调试”。 也可通过“调试”>“Windows”菜单检查程序反汇编、寄存器或内存。
Visual Studio 在 GDB 服务器和 OpenOCD 之间建立连接,以便可以在 RTApp 上使用标准的 Visual Studio 调试接口(F5、F6、用于设置断点的 F9 等),方法与在高级应用程序上相同。
在 C 源代码中的断点处停止时,可以打开一个 反汇编 窗口 ,显示当前地址、当前命令的汇编程序助记符,以及涉及的寄存器或正在执行的源代码命令等信息。
打开反汇编窗口:
- 确保 Visual Studio 中打开包含断点的 C 代码源文件。
- 选择“调试>Windows>反汇编”,或按 Alt+8。
使用 Visual Studio Code调试 RTApp
Visual Studio Code 通过按 F5 或从左侧栏上的调试视图中运行调试命令进行调试。 在示例中,.vscode/launch.json已存在,因此调试将立即启动。 在新应用中,调试将首先询问此为 HLApp 还是 RTApp,并根据答案创建 .vscode/launch.json。 然后,将启用调试。
在 C 源代码中的断点处停止时,可以打开一个反汇编视图,该视图显示当前地址、原始十六进制数据、当前命令的汇编程序助记,以及涉及的寄存器或正在执行的源代码命令等信息。
打开反汇编视图:
- 确保在 Visual Studio Code 编辑器中打开包含断点的 C 代码源文件。
- 在编辑器窗口中右键单击并选择“打开反汇编视图”,或选择“视图>命令面板>打开反汇编视图”。
使用 CLI 调试 RTApp
启动应用程序进行调试:
azsphere device app start --component-id <component id>
此命令返回应用程序正在其上运行的内核。
导航到生成应用程序所用的 sysroot 的 Openocd 文件夹。 在本快速入门中,sysroot 为 5+Beta2004。 sysroot 安装在 Azure Sphere SDK 安装文件夹中。 例如,在 Windows 上,该文件夹默认安装在
C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\5+Beta2004\tools\openocd
,而在 Linux 上安装在/opt/azurespheresdk/Sysroots/5+Beta2004/tools/sysroots/x86_64-pokysdk-linux/usr/bin/openocd
。如下面的示例所示,运行
openocd
。 该示例假定应用在内核 0 上运行。 如果应用在内核 1 上运行,请将“目标 io0”替换为“目标 io1”。使用 PowerShell、Windows 命令提示符或 Linux 命令行界面打开命令行界面。
导航到包含应用程序 .out 文件的文件夹,并启动 ARM GNU 嵌入式工具链中的
arm-none-eabi-gdb
:Windows 命令提示符
"C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
Windows PowerShell
& "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
OpenOCD 服务器在 :4444 上提供 GDB 服务器接口。 设置目标进行调试。
target remote :4444
运行选择的任何 gdb 命令。
使用合作伙伴应用进行开发
当你将应用程序加载到 Azure Sphere 设备上时,默认情况下 Azure Sphere 部署工具会删除所有现有应用程序。 若要防止在开发相互通信的应用程序时发生这种情况,需要将应用程序 标记为合作伙伴。 部署其中一个应用程序时,不会删除其合作伙伴。 有关详细信息,请参阅将应用程序标记为合作伙伴。
故障排除
如果遇到问题,请参阅对支持实时的应用程序进行故障排除。