如何在GDB中打印64位值

时间:2017-12-11 14:34:05

标签: gcc gdb

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

(gdb) p/x 1024*1024*1024*2
$2 = 0x80000000

但如果我越过32位阈值,我得到:

(gdb) p/x 1024*1024*1024*4
$3 = 0x0

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

2 个答案:

答案 0 :(得分:4)

除了Yaniv的答案外,您还可以在其中一个数字上使用ll后缀(取决于您的系统,只有一个l可以使用):

(gdb) p/x 1024*1024*1024*4ll
$2 = 0x100000000

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

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

答案 1 :(得分:1)

尝试转换值:

(gdb) p/x (unsigned long long) 1024*1024*1024*4
$1 = 0x100000000