Gdb 我可以用前导零打印rax寄存器的内容吗?

Gdb 我可以用前导零打印rax寄存器的内容吗?,gdb,hex,x86-64,Gdb,Hex,X86 64,当我以十六进制格式在gdb会话中打印eax寄存器的内容时,它不会打印前导零: (gdb) p/x $rax $6 = 0x3 我正在寻找一种可能性,以扩大输出打印所有16位十六进制数字,使输出成为 $6 = 0x0000000000000003 有这样的功能吗?您可以使用printf命令使用C格式化输出 您可以使用%lx打印long值。使用大小为16的Prependlx将在指定大小的字段中格式化右对齐的数字。如果您将0预先添加到它将为您零填充的大小。这应该起作用: printf "%016l

当我以十六进制格式在gdb会话中打印
eax
寄存器的内容时,它不会打印前导零:

(gdb) p/x $rax
$6 = 0x3
我正在寻找一种可能性,以扩大输出打印所有16位十六进制数字,使输出成为

$6 = 0x0000000000000003

有这样的功能吗?

您可以使用
printf
命令使用C格式化输出

您可以使用
%lx
打印
long
值。使用大小为16的Prepend
lx
将在指定大小的字段中格式化右对齐的数字。如果您将
0
预先添加到它将为您零填充的大小。这应该起作用:

printf "%016lx", $rax
如果要显示
0x
,您可以自己添加:

printf "0x%016lx", $rax

printf”%016lx“,$rax
@MichaelPetch:这件事太完美了。如果你把你的评论变成回答,我可以接受。