gdb print不会打印出来自char数组的可读内容

时间:2010-04-11 00:37:25

标签: c gdb printing

我有一个char buffer[100],我正在尝试使用gdb在运行时的各个阶段读取它的内容。

我使用p buffer,我得到了

"/*\000\000\000\000\000\000????X?o\000\025\202\004\b", '\0' <repeats 12 times>, ".N=?", '\0' <repeats 24 times>, "`\203\004\b\000\000\000\000L\227\004\bX????\202\004\b?\017\204\000\f?\203\000\210???i\205\004\b??r"

如何让p将其转换为可读格式?

2 个答案:

答案 0 :(得分:16)

x/s buffer应该将数组的内容显示为以空字符结尾的字符串(这是我假设你喜欢的)。

答案 1 :(得分:10)

如果你想在终止null之后摆脱垃圾(所以你只能看到"/*"这个字符串)你可以使用:

p (char*)buffer

目前gdb正在将您的变量打印为数组,因此它显示所有100个字符;将其转换为char*使其将其打印为C字符串。