CLion 2025.2 Help

多线程 RTOS 调试

在使用 RTOS 调试的情况下,CLion 提供了 FreeRTOSAzure RTOSZephyr 任务(线程)的视图。 对于 FreeRTOS,您还可以探索 对象

启用 RTOS 线程视图

  1. 转到 设置 | 构建、执行、部署 | 嵌入式开发 | RTOS 集成

  2. 选中 启用 RTOS 集成 复选框并从选项列表中选择:

    启用 RTOS 集成

RTOS 集成旨在适用于任何相关的 运行/调试配置 ,例如 嵌入式 GDB 服务器OpenOCD 下载与运行

例如,以下是如何使用 QEMU 模拟器设置嵌入式 GDB 服务器配置:

嵌入式 GDB 服务器配置示例

FreeRTOS / Azure RTOS / Zephyr 任务视图

在调试如上所述的配置时,您将在 线程与变量 面板的 调试工具窗口 中看到 FreeRTOS / Azure RTOS / Zephyr 任务的列表。

FreeRTOS 线程视图

对于每个任务,变量会显示在 变量 面板中。

RTOS 任务视图也适用于 对称多处理 (SMP)。 处理器核心必须相同并共享相同的内存。

FreeRTOS 对象视图

要探索 FreeRTOS 对象,请切换到 FreeRTOS 对象 选项卡。 任务 表显示了带有状态信息的任务列表; 队列 表显示了当前活动的队列、信号量和互斥量; 定时器 表列出了软件定时器:

FreeRTOS 对象视图

要使此选项卡正常工作,请在 FreeRTOSConfig.h 中配置以下定义:

  • configUSE_TRACE_FACILITY 设置为 1,以显示任务编号和队列类型。

  • configMAX_TASK_NAME_LEN 设置为大于零的值,以正确显示任务名称。

  • configRECORD_STACK_HIGH_ADDRESS 设置为 1,以显示任务堆栈信息。

  • configUSE_TRACE_FACILITYconfigGENERATE_RUN_TIME_STATS 设置为 1,以收集运行时信息(任务表的运行时列)。

  • 使用大于零的 configQUEUE_REGISTRY_SIZEvQueueAddToRegistry() 为队列、信号量或互斥量分配名称。 这很有用,因为队列默认没有名称,而任务在创建时会获得名称。

如果缺少某些定义,CLion 将显示警告:

缺少 FreeRTOS 定义

FreeRTOS 堆视图

FreeRTOS 堆 选项卡显示了所有默认 FreeRTOS 内存管理方案的当前堆使用情况和内存块分配。

FreeRTOS 堆视图
最后修改日期: 2025年 9月 26日