【发布时间】:2011-02-06 14:53:13
【问题描述】:
我有一个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 将其转换为可读格式???
【问题讨论】:
-
确保缓冲区中有可打印(可读)的数据? GDB 打印当前存在的内容 - 而不是您希望出现的内容。目前,
strcmp(buffer, "/*") == 0. -
嗯,所以我在这方面绝对是新手,作为旁注,为什么 strcmp(buffer, "/*") == 0 很重要?显然,这个缓冲区中的内容不仅仅是“/*”,所以对我来说 strcmp 将返回 0 似乎很明显......
-
它是“\000”,它代表“null”,它标志着 C 字符串的结尾。因此,您的缓冲区(被视为保存 C 字符串)实际上包含字符串“/*”(这就是 Jonathan Leffler 用他的
strcmp等式得到的 - 请注意,当字符串相同时,strcmp返回 0)。 -
哦,对了。出于某种原因,我认为它会返回 1。没关系....谢谢你们!