1.rtthread常用调试命令
系统状态类ps(线程)、meminfo(内存)、list_sem(IPC),用于快速定位系统层面问题;硬件调试类pin(GPIO)、i2cuart(外设),验证硬件和驱动通信;高级定位类bt(调用栈)、heap(内存调试),解决崩溃、内存泄漏等复杂问题。这些命令覆盖了80%以上的调试场景,掌握后能大幅提升RT-Thread开发和问题定位效率。
RT-Thread 提供了一套功能强大的 Shell 调试命令,是开发和调试过程中最常用的工具。
一、基础系统状态查看命令
这类命令用于快速了解系统的整体运行状态,是调试的第一步。
1. list_thread (简写:ps)
功能:查看系统中所有线程的状态、优先级、栈使用情况等核心信息。
用法:
msh > ps
典型输出:
thread pri status sp stack size max used left tick error
---------- --- ------- ---------- ---------- ------ ---------- ---
tshell 20 running 0x000007a0 0x00001000 22% 0x0000000a 000
idle 31 ready 0x00000380 0x00000100 39% 0x0000000a 000
led_thread 10 suspend 0x000005c0 0x00000800 18% 0x00000000 000
关键字段解释:
pri:线程优先级(数值越小优先级越高);status:状态(running/ready/suspend等);stack size/max used:栈总大小/已使用比例(超过100%表示栈溢出,是高频bug);left tick:剩余时间片。
2. list_timer
功能:查看系统中所有定时器的状态(是否激活、超时时间、回调函数等)。
用法:
msh > list_timer
3. list_sem / list_mutex / list_event / list_mailbox
功能:分别查看信号量、互斥锁、事件集、邮箱等IPC通信机制的状态,排查线程同步问题。
用法:
msh > list_sem # 查看信号量
msh > list_mutex # 查看互斥锁
二、内存调试命令
内存泄漏、内存越界是嵌入式开发的高频问题,这类命令是核心调试手段。
1. meminfo
功能:查看系统堆内存的使用情况(总大小、已用、空闲、最大空闲块)。
用法:
msh > meminfo
典型输出:
total memory: 131072
used memory : 12304
free memory : 118768
max free block: 118768
调试价值:如果 used memory 持续增长,大概率存在内存泄漏。
2. heap (需开启 RT_USING_HEAP_DEBUG 宏)
功能:更详细的堆内存调试,显示每个内存块的分配地址、大小、调用栈(需开启栈回溯)。
用法:
msh > heap
3. free (RT-Thread 中一般用 meminfo,部分版本兼容)
功能:简化版内存查看,快速确认空闲内存。
三、硬件/外设调试命令
1. pin
功能:直接操作GPIO引脚(读取/设置电平),快速验证硬件连接。
用法:
msh > pin read PA0 # 读取PA0引脚电平
msh > pin write PA1 1 # 设置PA1引脚为高电平
msh > pin mode PA2 output # 设置PA2为输出模式
2. uart
功能:查看串口配置、测试串口收发。
用法:
msh > uart list # 列出所有注册的串口设备
msh > uart test uart1 # 测试uart1的收发功能
3. i2c / spi (需开启对应组件)
功能:调试I2C/SPI总线,读取外设寄存器,验证通信是否正常。
用法:
msh > i2c scan i2c0 # 扫描i2c0总线上的设备地址
msh > i2c read i2c0 0x50 0x00 2 # 从i2c0设备0x50的0x00寄存器读取2字节
四、高级调试命令
1. backtrace (简写:bt,需开启 RT_USING_BACKTRACE)
功能:打印当前线程的函数调用栈,定位程序崩溃(如HardFault)的原因。
用法:
msh > bt # 打印当前线程调用栈
msh > bt tid1 # 打印指定线程ID的调用栈
2. reset
功能:软复位系统,快速重启设备(无需断电),调试时替代物理复位。
用法:
msh > reset
3. version
功能:查看RT-Thread版本、编译器版本,确认开发环境一致性。
用法:
msh > version
五、命令使用小贴士
- 命令补全:输入命令前几个字符按
Tab键,Shell会自动补全(需开启RT_USING_FINSH_CMD_COMPLETE); - 命令帮助:对不熟悉的命令,加
-h或--help查看用法(如ps -h); - 命令简写:大部分命令支持简写(如
list_thread→ps、list_timer→lt),可通过help查看所有支持的简写。
总结
RT-Thread调试的核心命令可归纳为三类:
- 系统状态类:
ps(线程)、meminfo(内存)、list_sem(IPC),用于快速定位系统层面问题; - 硬件调试类:
pin(GPIO)、i2c/uart(外设),验证硬件和驱动通信; - 高级定位类:
bt(调用栈)、heap(内存调试),解决崩溃、内存泄漏等复杂问题。
这些命令覆盖了80%以上的调试场景,掌握后能大幅提升RT-Thread开发和问题定位效率。
六、补充命令列表归类
一、系统与初始化类
|
命令 |
功能 |
典型用法 |
|
|
初始化按键相关硬件/驱动 |
|
|
|
软重启系统 |
|
|
|
查看 RT-Thread 版本、编译器信息 |
|
|
|
列出所有可用命令及说明 |
|
|
|
清空终端屏幕 |
|
二、线程与系统状态类
|
命令 |
功能 |
典型用法 |
|
|
查看所有线程的优先级、状态、栈使用等 |
|
|
|
查看系统中所有信号量 |
|
|
|
查看系统中所有事件集 |
|
|
|
查看系统中所有互斥锁 |
|
|
|
查看系统中所有邮箱 |
|
|
|
查看系统中所有消息队列 |
|
|
|
查看系统中所有定时器 |
|
|
|
查看系统中注册的所有设备 |
|
|
|
查看文件描述符列表 |
|
三、内存调试类
|
命令 |
功能 |
典型用法 |
|
|
查看系统堆内存使用情况(总/已用/空闲) |
|
|
|
列出系统中所有内存堆 |
|
|
|
列出系统中所有内存池 |
|
|
|
转储内存跟踪信息(用于排查泄漏/越界) |
|
四、文件系统操作类
|
命令 |
功能 |
典型用法 |
|
|
列出当前目录下的文件/文件夹 |
|
|
|
复制文件 |
|
|
|
移动/重命名文件 |
|
|
|
查看文件内容 |
|
|
|
删除文件/链接 |
|
|
|
切换工作目录 |
|
|
|
打印当前工作目录路径 |
|
|
|
创建文件夹 |
|
|
|
格式化磁盘(指定文件系统类型) |
|
|
|
挂载设备到指定路径 |
|
|
|
卸载已挂载的设备 |
|
|
|
查看磁盘分区使用情况 |
|
五、AT 组件与测试类
|
命令 |
功能 |
典型用法 |
|
|
AT 组件命令行交互(服务器/客户端模式) |
|
|
|
命令行测试(用于测试 DIVBYZERO/UNALIGNED/ULOG_ASSERT 等异常) |
`cmb_test <DIVBYZERO |
|
|
查看设备状态 |
|
|
|
片上 SRAM 读写测试 |
|
|
|
列出所有单元测试用例 |
|
|
|
运行指定单元测试用例 |
|
六、时间与日期类
|
命令 |
功能 |
典型用法 |
|
|
获取/设置系统日期和时间(支持本地时区) |
|
|
|
通过 NTP 协议同步系统时间 |
|
七、外设与硬件调试类
|
命令 |
功能 |
典型用法 |
|
|
ADC 功能测试/读取电压 |
|
|
|
LCD 屏幕初始化与测试 |
|
|
|
看门狗驱动示例 |
|
|
|
USB CDC 设备初始化 |
|
|
|
查看电流相关信息(功耗调试) |
|
|
|
LED 定时器示例初始化 |
|
八、网络与通信类
|
命令 |
功能 |
典型用法 |
|
|
查看所有网络接口信息(IP/MAC/状态) |
|
|
|
测试网络连通性 |
|
|
|
查看/设置 DNS 服务器 |
|
|
|
查看 TCP/IP 连接状态 |
|
|
|
启动 MQTT 客户端 |
|
|
|
停止 MQTT 客户端 |
|
|
|
发布消息到指定 MQTT 主题 |
|
|
|
订阅 MQTT 主题 |
|
|
|
取消订阅 MQTT 主题 |
|
|
|
连接 EMQX MQTT broker 示例 |
|
|
|
TCP 服务端示例 |
|
|
|
TCP 客户端示例 |
|
|
|
UDP 服务端示例 |
|
|
|
UDP 客户端示例 |
|
|
|
设置默认网络接口设备 |
|
|
|
Modbus 从机示例 |
|
|
|
TCP 服务端示例(别名) |
|
九、串口与文件传输类
|
命令 |
功能 |
典型用法 |
|
|
YMODEM 协议接收文件(默认串口 console) |
|
|
|
YMODEM 协议发送文件(默认串口 console) |
|
十、其他工具类
|
命令 |
功能 |
典型用法 |
|
|
输出字符串到终端 |
|
|
|
打印文件最后 N 行内容 |
|
|
|
输出 "hello world"(示例命令) |
|
|
|
列出所有命令(同 |
|
更多推荐



所有评论(0)