GDB print не распечатывает что-то читаемое из моего массива char - PullRequest
8 голосов
/ 11 апреля 2010

У меня есть 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 ]

16 голосов
/ 11 апреля 2010

x/s buffer должно отображать содержимое массива в виде строки с нулевым символом в конце (как я полагаю, вам бы хотелось)

10 голосов
/ 11 апреля 2010

Если вы хотите избавиться от мусора после завершающего нуля (так что вы просто увидите "/*" для этой строки), вы можете использовать:

p (char*)buffer

В данный момент gdb печатает вашу переменную в виде массива, поэтому она показывает все 100 символов; приведение к char* заставляет его печатать как строку C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...