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
Ссылки: