GDB print не распечатывает что-то читаемое из моего массива

У меня есть 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, чтобы преобразовать его в читаемый формат ???

8
задан Tony Stark 11 April 2010 в 00:37
поделиться

2 ответа

буфер x / s должен отображать содержимое массива в виде строки с завершающим нулем (что, как я полагаю, вам нужно).

16
ответ дан 5 December 2019 в 06:22
поделиться

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

p (char*)buffer

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

10
ответ дан 5 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: