You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GDB的monitor命令中使用变量自动配置SEGGER RTT

解决GDB中monitor命令无法展开自定义变量的问题

问题核心在于monitor命令会直接将参数传递给底层调试工具(比如OpenOCD),GDB不会自动解析并展开monitor后面的自定义变量(如$rtt_offset、$rtt_size)。要实现自动调用monitor rtt setup并带入正确的符号值,需借助GDB的eval命令动态拼接执行命令。

具体实现步骤

  1. 先定义变量获取_SEGGER_RTT的地址和大小:
set $rtt_offset = &_SEGGER_RTT
set $rtt_size = sizeof _SEGGER_RTT
  1. 使用eval命令拼接并执行monitor命令,通过格式符将变量值展开为实际的地址和数值:
eval "monitor rtt setup %p %d \"SEGGER RTT\"", $rtt_offset, $rtt_size
  • %p会将$rtt_offset格式化为指针地址(例如0x20000410)
  • %d会将$rtt_size格式化为整数大小
  • 注意双引号需要用转义符\"保留在最终的命令字符串中
  1. 将上述命令直接写入.gdbinit文件,即可在GDB启动时自动完成RTT的初始化配置。

内容的提问来源于stack exchange,提问作者David van rijn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 19:18:10