如何在GDB中打印指针内容?

20
在GDB中,我正在尝试执行以下命令:

gdb> p/s *0x0804b680

它给出的结果是:

$6 = 0x6c627550

很明显,它应该输出 lbruP,难道我错了吗?

我已经完成了。所以我确信我的GDB出现故障,因为它只输出了答案的一半。通常输出应该是"$6 = 0x6c627550 'lbruP'"。 - drum
1个回答

20

对于字符指针p = "abcde";

执行

p /s p 

例如,不是*p

(gdb) p /s p
$9 = 0x40060c "abcde"

如果您的p不是char *类型(例如,void * v = p),则可以将其转换或使用x命令

(gdb) p /s (char*)v
$7 = 0x40061c "abcde"
(gdb) x /s v
0x40061c:    "abcde"

这是因为p已经是一个指针类型。在我的情况下,0x0804b680只是一个数字,当'p /s 0x0804b680'输出'0x0804b680'时。通过在前面加上'*',我告诉GDB将0x0804b680视为指针。 - drum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接