如何在GDB中禁用内存查看时的汇编标签打印,实现数据正确对齐
解决方案
方法1:完全关闭地址旁的符号标签显示
直接在gdb交互界面执行以下命令:
set print symbols off
设置后再次执行x命令查看内存,就不会再输出<pt_table>这类符号标签,输出格式会和你期望的第一种效果完全一致,所有行的内存数据都会自动对齐。
如果需要永久生效,可以把这条命令添加到你的用户目录下的.gdbinit文件中,每次启动gdb都会自动加载配置。
方法2:保留符号显示,单独一行输出
原生gdb没有内置开关实现符号单独成行的效果,你可以通过自定义gdb宏来实现:
- 在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
- 使用时直接调用自定义命令即可,输出效果和你期望的第二种效果完全一致:
(gdb) x_align /16zw &pt_table $1 = 0x102000 <pt_table> 0x102000: 0x00000000 0x00000000 0x00000000 0x00000000 0x102010: 0x00000000 0x00000000 0x00000000 0x00000000
内容的提问来源于stack exchange,提问作者onlycparra
相关产品推荐
相关产品推荐

