Подтвердить что ты не робот

Как мне показать, какие поля имеет структура в GDB?

Я наткнулся на структуру (называемую ngx_http_variable_value_t) в моем сеансе GDB (отладчик), и я хотел бы напечатать, какие поля она имеет в консоли.

Это возможно?

4b9b3361

Ответ 1

Вы можете использовать команду GDB ptype, чтобы распечатать определение структуры или класса.

Ответ 2

Если у вас есть отладочные символы, вы можете просто напечатать значение: print variable или print *variable, если это указатель на структуру.

Ответ 3

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"
  },
}

Ответ 4

В дополнение к использованию опции командной строки вы также можете использовать графические отладчики. Я предлагаю gdbgui, но их довольно много.

screenshot

Отказ от ответственности: я являюсь разработчиком gdbgui

Ответ 5

Я делал это только через графические интерфейсы для gdb. Нашел эту запись в онлайн-документах gdb. Надеюсь, поможет. Я считаю, что это потребует, чтобы код был создан с включенной информацией для отладки.

ptype [arg] ptype принимает те же аргументы, что и whatis, но печатает подробное описание типа, а не просто имя типа.

Отладка с помощью GDB: Символы

Ответ 7

  p *((struct my_struct*) variable)

Это поможет вам распечатать детали структуры в GDB