(gdb) p /a *(void**)0x8048948@2 $7 = {0x8048834 <_ZN1D4testEv>, 0x8048808 <_ZN1D5test2Ev>} 查看虚表的前面,会发现g++实现的时候将RTTI信息放到虚函数表的前面一点点了。反汇编查看代码其实也可以发现的,typeid会根据虚表指针偏移一下去找RTTI信息。 点击(此处)折叠或打开 (gdb) p /a *((...
(gdb) p /a *(void**)0x8048948@2 $7 = {0x8048834 <_ZN1D4testEv>, 0x8048808 <_ZN1D5test2Ev>} 查看虚表的前面,会发现g++实现的时候将RTTI信息放到虚函数表的前面一点点了。反汇编查看代码其实也可以发现的,typeid会根据虚表指针偏移一下去找RTTI信息。 点击(此处)折叠或打开 (gdb) p /a *((...
(gdb) b *0x804880e Note: breakpoint 2 also set at pc 0x804880e. Breakpoint 3 at 0x804880e: file a.cpp, line 18. 2. 查看虚函数表 如果仅仅是想知道当前对象的真实类别,那使用这句就可以看到了(示例里面的b实际上是D类对象,而非B类)。 点击(此处)折叠或打开 (gdb) set print object on ...
gdb查看虚函数表、函数地址 1. 查看函数地址 看函数在代码的哪⼀⾏,使⽤info line就可以看到类似下⾯这中输出 点击(此处)折叠或打开 1. (gdb) info line a.cpp:10 2. Line 10 of "a.cpp" starts at address 0x80487d4 <_ZN1B5test2Ev> and ends at 0x80487d7 <_ZN1B5test2Ev+3>.3. ...
gdb查看虚函数表、函数地址 1. 查看函数地址 看函数在代码的哪一行,使用info line就可以看到类似下面这中输出 点击(此处)折叠或打开 (gdb) info line a.cpp:10 Line 10 of "a.cpp" starts at address 0x80487d4 <_ZN1B5test2Ev> and ends at 0x80487d7 <_ZN1B5test2Ev+3>. ...