如何让GDB以十六进制模式打印出所有的值?

34

默认情况下,GDB总是以十进制打印/显示所有变量/参数。

有没有办法让GDB始终在打印任何内容时使用十六进制(并在我不需要时恢复默认设置)?

我知道可以通过向打印/显示提供/x参数来打印,但我不想每次都这样做。

2个回答

59

set output-radix 16 (然后使用set output-radix 10 切换回来)。


很遗憾,这在实践中不起作用... 如何强制GDB以16进制打印? - jww
对我来说可以用 bt full。所以也许它并不总是像链接中描述的那样工作,但有时它确实非常有效。 - Per Lundberg
现在在GDB Bugzilla中开放:问题23390,GDB不遵守“set output-radix 16”;它以八进制显示。我再也受不了了。天哪,我讨厌使用GDB。当它是唯一可用的调试器时,我会感到非常不安。 - jww
对我来说没问题。gdb --version: GNU gdb(GDB)Red Hat Enterprise Linux 7.6.1-100.el7_4.1 - Paul
对我来说工作正常,除了字符串内部。我正在处理UTF/ISO转换,因此将“未知”字符显示为十六进制而不是八进制将非常有帮助。 - thoni56
@jww: 当我打印数组时,我得到了类似于\243\300的八进制值。为了解决这个问题,使用p/x *my_arr@arr_len可以以十六进制打印变量的值。而p/z则会在需要时添加前导零,例如,0x8会变成0x08。另请参考此链接 - Matthias Braun

0
在我的机器上,set output-radix 10 不起作用,但是 set output-radix 0xA 起作用。

show input-radix 告诉你什么? - Matthias Braun

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