调试支持实时的应用程序

重要

这是 Azure Sphere(旧版)文档。 Azure Sphere(旧版)将于 2027 年 9 月 27 日停用,用户此时必须迁移到 Azure Sphere(集成)。 使用位于 TOC 上方的版本选择器查看 Azure Sphere(集成)文档。

使用随 Azure Sphere SDK 一起安装的 OpenOCD 和作为 ARM GNU 嵌入式工具链一部分安装的 GDB 版本调试 RTApps。

使用 Visual Studio 调试 RTApp

  1. 确保通过 USB 将设备连接到电脑。 在 “设置启动项 ”菜单中,选择 Azure Sphere 应用 (RT Core), 其中 Azure Sphere 应用 是当前支持实时的应用程序的名称或按 F5

    远程 GDB 调试程序按钮

  2. 如果系统提示你生成项目,请选择“是”。 Visual Studio 编译支持实时的应用程序,创建映像包, 将其旁加载 到开发板上,并在调试模式下启动它。 “旁加载”意味着应用程序通过有线连接直接从电脑传送,而不是通过云传送

    请注意“视图>输出>显示输出”输出中的映像 ID:生成输出:准备好创建部署时,需要知道映像包的路径。

  3. 默认情况下,“输出”窗口显示设备输出的输出。 若要查看调试程序中的消息,请从“显示输出来源:”下拉菜单中选择“调试”。 也可通过“调试”>“Windows”菜单检查程序反汇编、寄存器或内存。

Visual Studio 在 GDB 服务器和 OpenOCD 之间建立连接,以便可以在 RTApp 上使用标准的 Visual Studio 调试接口(F5、F6、用于设置断点的 F9 等),方法与在高级应用程序上相同。

在 C 源代码中的断点处停止时,可以打开一个 反汇编 窗口 ,显示当前地址、当前命令的汇编程序助记符,以及涉及的寄存器或正在执行的源代码命令等信息。

打开反汇编窗口:

  1. 确保 Visual Studio 中打开包含断点的 C 代码源文件。
  2. 选择“调试>Windows>反汇编”,或按 Alt+8。

使用 Visual Studio Code调试 RTApp

Visual Studio Code 通过按 F5 或从左侧栏上的调试视图中运行调试命令进行调试。 在示例中,.vscode/launch.json已存在,因此调试将立即启动。 在新应用中,调试将首先询问此为 HLApp 还是 RTApp,并根据答案创建 .vscode/launch.json。 然后,将启用调试。

在 C 源代码中的断点处停止时,可以打开一个反汇编视图,该视图显示当前地址、原始十六进制数据、当前命令的汇编程序助记,以及涉及的寄存器或正在执行的源代码命令等信息。

打开反汇编视图:

  1. 确保在 Visual Studio Code 编辑器中打开包含断点的 C 代码源文件。
  2. 在编辑器窗口中右键单击并选择“打开反汇编视图”,或选择“视图>命令面板>打开反汇编视图”。

使用 CLI 调试 RTApp

  1. 启动应用程序进行调试:

    azsphere device app start --component-id <component id>
    

    此命令返回应用程序正在其上运行的内核。

  2. 导航到生成应用程序所用的 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

  3. 如下面的示例所示,运行 openocd。 该示例假定应用在内核 0 上运行。 如果应用在内核 1 上运行,请将“目标 io0”替换为“目标 io1”。

    openocd -f mt3620-rdb-ftdi.cfg -f mt3620-io0.cfg -c "gdb_memory_map disable" -c "gdb_breakpoint_override hard" -c init -c "targets io0" -c halt -c "targets"
    
  4. 使用 PowerShell、Windows 命令提示符或 Linux 命令行界面打开命令行界面。

  5. 导航到包含应用程序 .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
    
  6. OpenOCD 服务器在 :4444 上提供 GDB 服务器接口。 设置目标进行调试。

    target remote :4444

  7. 运行选择的任何 gdb 命令。

使用合作伙伴应用进行开发

当你将应用程序加载到 Azure Sphere 设备上时,默认情况下 Azure Sphere 部署工具会删除所有现有应用程序。 若要防止在开发相互通信的应用程序时发生这种情况,需要将应用程序 标记为合作伙伴。 部署其中一个应用程序时,不会删除其合作伙伴。 有关详细信息,请参阅将应用程序标记为合作伙伴

故障排除

如果遇到问题,请参阅对支持实时的应用程序进行故障排除