对支持实时的应用程序进行故障排除
下面是在开发支持实时的应用程序 (RTApps) 时可能出现的问题的一些故障排除步骤。
调试问题
调试可能由于以下原因而失败:
Windows 更新将实时核心的 USB 驱动程序替换为通用驱动程序。 若要还原实时核心的调试功能,请使用具有管理员权限的 PowerShell 或 Windows 命令提示符打开命令行界面,并重新启用实时核心调试。 运行以下操作时,将安装所需的 USB 驱动程序:
az sphere 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 问题
将 CMake 与 RTApp 配合使用时,可能会遇到以下问题:
- 首次在 Visual Studio 中打开 CMake 项目时,CMakeLists 生成会自动运行并设置应用程序的组件 ID。 如果随后删除组件 ID(例如,因为应用程序位于 GitHub 存储库中,并且你已执行硬重置),则生成将失败。 若要解决此问题,请在 Visual Studio 中重新生成 CMake 缓存。
- CMakeLists.txt 启动项经常重新生成。 每当 Visual Studio 重新生成 CMake 缓存时,CMakeLists 任务将运行。 因此,它可能会经常运行。
- 使用 CMake 生成 RTApp 时,Visual Studio 会挂起。 若要避免此问题,请使用 Visual Studio 2019 update 1 或更高版本。
一般情况下,如果使用 CMake 时发生错误,请尝试重新生成 CMake 缓存。 这通常可解决问题。