首页 > 解决方案 > 这个 GDB 输出是什么意思?

问题描述

我有一个字符缓冲区,当我得到信息本地人时:

buf = "\310X\346\354\376\177\000\000E2\360\025\241\177\000\000pG\356\025\241\177\000\000\000\000\000\000\211\320\005\000\340G\356\025\241\177\000\000\000 \000\000\000\000\000\000 \247\244\025\241\177\000\000\000\243\341\021\000\000\000\000\030L\356\025\241\177\000\000W\220\244\025\241\177\000\000\032\000\000\000\000\000\000\000hJ\356\025\241\177\000\000hJ\356\025\241\177\000\000\241\005$\026"

我很困惑如何解释这个输出。我排除了成对的六进制数字(2 hexa = 1 字节)。怎么读?它甚至不是十进制表示法,因为有些大于 256。

标签: gdb

解决方案


我很困惑如何解释这个输出。

默认情况下,GDB 以八进制形式打印不可打印的字符\3100xc8. 缓冲区中的第一个字符是0xc8 0x58 0xe6 0xec ....

如果将缓冲区打印为十六进制,则解释缓冲区可能会更容易。用于x/20xb buf检查前 20 个字符,或p/x buf检查整个缓冲区直到终止NUL


推荐阅读