为啥 GDB 以八进制显示 char?

Posted

技术标签:

【中文标题】为啥 GDB 以八进制显示 char?【英文标题】:Why does GDB display char in octal?为什么 GDB 以八进制显示 char? 【发布时间】:2018-04-09 02:34:10 【问题描述】:

我不明白在 vscode 的 gdb 调试视图中用八进制表示 char 或 unsigned char 来代替 ascii 字符的设计选择(如果 char 中的数据在 ascii 字符的范围内,它显示一个 ascii 字符)。我在 ubuntu 17.10 上使用最新版本的 vscode。作为一个人类,这让我感到困惑,但我希望有人能解释其背后的逻辑。另外,如果可能的话,我想改变这种行为。

【问题讨论】:

我确信 gdb 的部分内容可以追溯到几十年前,当时八进制符号的使用非常普遍,尤其是在引用控制字符时。在这里,这个字符是一个不可打印的字符。它需要以某种有意义的方式显示,而且 gdb 的遗产意味着几十年前出于某种原因做出了使用八进制的决定。她就是这么写的。 这是有道理的。当我使用原始字节时,如果它是十进制或十六进制,它会变得容易得多! 【参考方案1】:

如果您准备从源代码重建 GDB(这在 Linux 上并不难!),试试这个:

https://***.com/a/60450772/12978961

【讨论】:

以上是关于为啥 GDB 以八进制显示 char?的主要内容,如果未能解决你的问题,请参考以下文章

gdb里面怎么用16进制打印一块内存数据

x/nfu-用gdb查看内存

如何 gdb 如何打印一个地址中的内容

如何将unsigned char数组以十六进制形式显示在CListBox控件中

“gdb”和“valgrind”以不同的方式执行二进制文件?

为啥gdb找不到源文件