对支持实时的应用程序进行故障排除

重要

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

以下是针对开发支持实时的应用程序 (RTApp) 过程中可能出现的问题的一些故障排除步骤。

调试问题

调试可能由于以下原因而失败:

  • Windows 更新将实时核心的 USB 驱动程序替换为通用驱动程序。 若要还原实时核心的调试功能,请使用具有管理员权限的 PowerShell 或 Windows 命令提示符打开命令行界面,并重新启用实时核心调试。 运行时会安装所需的 USB 驱动程序:

    azsphere device enable-development --enable-rt-core-debugging
    
  • 调试设置文件包含错误。 在此情况下,调试器可能无法启动。 如果已编辑调试器设置,请确保文件的语法正确。

  • 芯片上调试器可能已在另一个上下文中启动。 如果看到错误(如“调试器服务器:错误:无法将 gdb 绑定到端口 4444 上的套接字:地址已使用”或“错误:libusb_open() 失败并出现LIBUSB_ERROR_ACCESS”,请检查是否已运行 openocd 或 gdb 进程。

    如果在 Linux 上运行,该命令 sudo lsof -n -i :4444 | grep LISTEN 应显示保留端口 4444 打开的任何进程。 替换为 4444 错误消息中提到的任何其他端口应为该端口提供相同的信息。

  • 你可能缺少 Ubuntu 20.04 系统上的 libncurses5 包。 如果看到“加载共享库时出错:libncurses.so.5:无法打开共享对象文件:没有此类文件或目录”等错误,则应按如下所示安装包:

    sudo add-apt-repository universe
    sudo apt-get install libncurses5
    
  • 如果尝试使用 Visual Studio 的多个实例同时调试高级应用和两个 RTApp,则 Visual Studio 的第二个实例将无法连接到调试器。 若要解决此问题,请从 Visual Studio 的单个实例调试所有应用,如调试合作伙伴应用程序中所述

CMake 问题

在 RTApp 中使用 CMake 时,可能会遇到以下问题:

  • 在 Visual Studio 中首次打开 CMake 项目时,CMakeLists 生成会自动运行并为应用程序设置组件 ID。 如果随后删除组件 ID(例如,因为应用程序位于 GitHub 存储库且你已完成硬重置),生成会失败。 若要解决此问题,在 Visual Studio 中重新生成 CMake 缓存。
  • CMakeLists.txt 启动项频繁重新生成。 每当 Visual Studio 重新生成 CMake 缓存时,CMakeLists 任务都会运行。 因此,它可能经常运行。
  • 使用 CMake 生成 RTApp 时,Visual Studio 停止响应。 若要避免此问题,请使用 Visual Studio 2019 更新 1 或更高版本。

一般来说,如果使用 CMake 时出现错误,请尝试重新生成 CMake 缓存。 这通常可以解决问题。