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