我正在尝试获取宽度为8的长2D阵列的格式化打印。使用x
命令时,我将阵列打印为四列表:
(gdb) x/16f 0x81000000
0x81000000: 0 0 1 0
0x81000010: 2 0 3 0
0x81000020: 4 0 5 0
0x81000030: 6 0 7 0
使用p
命令时,我得到一个未格式化的输出,即终端的宽度:
(gdb) p/f *(0x81000000)@16
$27 = {0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0}
必需的输出,如:
(gdb) x/16f 0x81000000
0x81000000: 0 0 1 0 2 0 3 0
0x81000020: 4 0 5 0 6 0 7 0
或:
(gdb) p/f *(0x81000000)@16
$27 = {0, 0, 1, 0, 2, 0, 3, 0,
4, 0, 5, 0, 6, 0, 7, 0}
是否有一种简单的方法可以格式化特定宽度的输出?
答案 0 :(得分:0)
使用python脚本:
我认为这非常接近,如果相当模糊:
python print "\n".join(", ".join(gdb.execute('x/f 0x%x' % a, False, True).split()[-1] for a in range(s, s+32, 4)) for s in range(0x81000000, 0x81000040, 32))