Gdb recoursive type printing

Материал из SEWiki
Перейти к: навигация, поиск
  • Студент: TBD
  • Руководитель: TBD

Описание: зачастую разработчикам приходится анализировать чужой код. Одним из инструментов анализа может является отладчик.

Пусть у нас есть код:

 1 class A
 2 {
 3     int m_a[5];
 4 public:
 5     A()
 6     {}
 7 };
 8
 9 class B
10 {
11     int m_b;
12     A m_a[5];
13 public:
14     B()
15     {}
16 };
17
18 int main(int argc, char** argv)
19 {
20     A a;
21     B b;
22     return 0;
23 }

Открыв скомпилированый код в gdb мы можем просмотреть информацию о типах:

(gdb) pt B
type = class B {
  private:
    int m_b;
    A m_a[5];

  public:
    B(void);
}

В WinDBG есть команда позволяющая вывести как объект расположен в памяти:

> dt -r B
a.exe!B
   +0x000 m_b : int32B
   +0x020 m_a : [5] A
      +0x000 m_a              : [5] int32B

Цель проекта расширить команду pt в GDB, добавив возможность просматривать как типы/объекты распологаются в памяти в том числе и рекурсивно

Ожидаемый результат:

  • patch принят в GDB

Ссылки: