Как показать, какие поля имеет структура в GDB?
я наткнулся на сооружение под названием ngx_http_variable_value_t
в моем сеансе GDB, и я хотел бы напечатать, какие поля он имеет в консоли.
это возможно?
6 ответов
Если у вас есть встроенные символы отладки, вы должны просто иметь возможность печатать значение:print variable
или print *variable
если это указатель на struct.
set print pretty on
эта опция также дает новые строки и отступы для p *my_struct_pointer
.
что вы предпочитаете:
= {path = {mnt = 0xffff8800070ce1a0, dentry = 0xffff880006850600},last = {{{hash = 3537271320, len = 2}, hash_len = 12127205912}, name = 0xffff88000659501c "../b.out"}
или:
= {
path = {
mnt = 0xffff8800070ce1a0,
dentry = 0xffff880006850600
},
last = {
{
{
hash = 3537271320,
len = 2
},
hash_len = 12127205912
},
name = 0xffff88000659501c "../b.out"
},
}
в дополнение к использованию опции командной строки можно также использовать графические отладчики. Я предлагаю gdbgui, но их довольно много.
отказ от ответственности: я разработчик gdbgui
Я сделал это только через графические интерфейсы для gdb. Нашел эту запись в GDB online docs. Надеюсь, это поможет. Я считаю, что для этого потребуется, чтобы код был создан с отладочной информацией.
ptype [arg] ptype принимает те же аргументы, что и whatis, но печатает подробное описание типа, а не только имя типа.