如何在GDB中打印64位值

Who*_*ome 1 gcc gdb

如果我启动gdb会话并键入:

(gdb) p/x 1024*1024*1024*2
$2 = 0x80000000
Run Code Online (Sandbox Code Playgroud)

但是,如果我超过了32位阈值,我将得到:

(gdb) p/x 1024*1024*1024*4
$3 = 0x0
Run Code Online (Sandbox Code Playgroud)

如何在gdb中显示整个64位值?

cal*_*hiz 5

除了Yaniv的答案外,您还可以ll在其中一个数字上使用后缀(l根据您的系统,一个数字可能会起作用):

(gdb) p/x 1024*1024*1024*4ll
$2 = 0x100000000
Run Code Online (Sandbox Code Playgroud)

如果要使用x命令将内存内容打印为64位值,则可以使用gsize修饰符:

(gdb) x/8xg  
0x7fffffffe008: 0x0000000000400e44  0x00007ffff7fe3000
0x7fffffffe018: 0x0000000000000000  0x0000000000000000
0x7fffffffe028: 0x0000000000f0b5ff  0x00000000000000c2
0x7fffffffe038: 0x0000000000000100  0x0000000000000001
Run Code Online (Sandbox Code Playgroud)