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