Может ли GDB распечатать содержимое буфера, записанного функцией C write ()? - PullRequest
0 голосов
/ 04 марта 2020

У меня есть следующий код:

write(fd[1], user_id, sizeof(user_id));

Можно ли использовать gdb для просмотра содержимого буфера, записанного этой командой? Использование x или print дает только адрес памяти, а не содержимое буфера в этом адресе.

(gdb) x write
0x7ffff7af4140 <__GI___libc_write>: 0xb1058d48

Поскольку fd [1] ссылается на стандартный вывод, этот запрос должен быть эквивалентен проверке состояния буфер stdout.

Дополнительная информация: user_id - это массив символов. fd [1] означает, что запись пишет в стандартный вывод (fd [0] относится к стандартному вводу). Это строка 44 программы, и я обращаюсь к ней с точкой останова.

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Предположим, вас интересует переменная user_id, присутствующая в строке 44 файла myfile.c программы myprogram

write(fd[1], user_id, sizeof(user_id)); //line 44 of myfile.c

Вы должны выполнить это:

gdb myprogram

Установить точку останова в GDB:

b myfile.c:44 

Запустить программу (после этой команды будет достигнута точка останова):

run

Вывести значение переменной:

p user_id
0 голосов
/ 05 марта 2020

Кажется, что нет такой функциональности GDB.

...