调试支持实时的应用程序

RTApps 使用 OpenOCD(随 Azure Sphere SDK 一起安装)和作为 ARM GNU Embedded Toolchain 的一部分安装的 GDB 版本进行调试。

使用 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 或从左侧栏上的调试视图中运行 debug 命令来调试的。 在示例中,.vscode/launch.json 已存在,因此将立即开始调试。 在新应用中,调试将首先询问这是 HLApp 还是 RTApp,并从答案创建 .vscode/launch.json。 然后将启用调试。

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

打开反汇编视图:

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

使用 CLI 调试 RTApp

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

    az sphere 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 上运行,请将“targets io0”替换为“targets 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-none-eabi-gdb,这是 ARM GNU 嵌入式工具链的一部分:

    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 部署工具默认会删除所有现有应用程序。 若要防止在开发相互通信的应用程序时发生这种情况,需要将应用程序标记为 合作伙伴。 部署其中一个应用程序时,不会删除其伙伴。 有关详细信息 ,请参阅将应用程序标记为合作伙伴

故障 排除

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