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

如何在GDB中禁用内存查看时的汇编标签打印,实现数据正确对齐

解决方案

方法1:完全关闭地址旁的符号标签显示

直接在gdb交互界面执行以下命令:

set print symbols off

设置后再次执行x命令查看内存,就不会再输出<pt_table>这类符号标签,输出格式会和你期望的第一种效果完全一致,所有行的内存数据都会自动对齐。
如果需要永久生效,可以把这条命令添加到你的用户目录下的.gdbinit文件中,每次启动gdb都会自动加载配置。

方法2:保留符号显示,单独一行输出

原生gdb没有内置开关实现符号单独成行的效果,你可以通过自定义gdb宏来实现:

  1. 在gdb中输入以下内容定义自定义命令x_align:
define x_align
  # 保存原有符号打印配置
  set $old_print_sym = $print_symbols
  # 先单独打印地址对应的符号
  p/a $arg1
  # 关闭符号打印后输出内存内容
  set print symbols off
  x $arg0 $arg1
  # 恢复原有配置
  set print_symbols = $old_print_sym
end
# 给自定义命令加帮助说明
document x_align
Usage: x_align [x命令参数] [目标地址]
打印内存时先单独输出地址对应的符号,再输出对齐的内存数据
Example: x_align /16zw &pt_table
end
  1. 使用时直接调用自定义命令即可,输出效果和你期望的第二种效果完全一致:
(gdb) x_align /16zw &pt_table
$1 = 0x102000 <pt_table>
0x102000: 0x00000000  0x00000000  0x00000000  0x00000000
0x102010: 0x00000000  0x00000000  0x00000000  0x00000000

内容的提问来源于stack exchange,提问作者onlycparra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:36:04