相关疑难解决方法(0)

使用GDB打印C++ vtable

我正在尝试使用gdb打印对象的vtable; 我找到了

show print vt bl on
Run Code Online (Sandbox Code Playgroud)

设置,但我实际上还不知道如何打印vtable - p*对象仍然不打印出来.

如何打印vtable?

c++ gdb

27
推荐指数
5
解决办法
2万
查看次数

以g ++转储类/结构成员变量

是否有转换结构/类g++成员变量的标志或工具?为了说明,请考虑这样的源代码

struct A { virtual void m() {}; };
struct B : public A { int b; virtual void n() = 0; };
struct C : public B { int c1, c2; void o(); };
struct D : public C { virtual void n() {}; A d; };
Run Code Online (Sandbox Code Playgroud)

我想得到类似的东西

A:   0 = (vptr)

B:   0 = (vptr)
     4 = b

C:   0 = (vptr)
     4 = b
     8 = c1
    12 = c2

D:   0 = …
Run Code Online (Sandbox Code Playgroud)

c++ gcc g++

13
推荐指数
1
解决办法
3633
查看次数

使用g ++编译器打印C++对象的布局

有没有办法使用g ++编译器或任何其他方法打印C++对象的布局.一个简化的例子(假设int需要4个字节)

class A{
  int a;
};

class B:public A{
  int b;
}
Run Code Online (Sandbox Code Playgroud)

所以输出就是

A-
0      4
+  a   +

B-
0      4      8
+ A.a  +  b   +
Run Code Online (Sandbox Code Playgroud)

理解对象的布局(在我的例子中是虚拟机代码)会很有用.

提前致谢.

问候,扎赫尔

c++ g++ memory-layout

11
推荐指数
2
解决办法
3079
查看次数

使用gdb在C++的多态类中的vtable

如何使用指向具有虚函数的基类对象的指针来显示vtable?

c++ gdb vtable

10
推荐指数
2
解决办法
6735
查看次数

纯虚函数位于C++中的哪个位置?

哪个虚拟表将是纯虚函数?在基类或派生类中?

例如,每个类中的虚拟表是什么样的?

class Base {

  virtual void f() =0;
  virtual void g();
}


class Derived: public Base{

  virtual void f();
  virtual void g();

}
Run Code Online (Sandbox Code Playgroud)

c++ vtable

8
推荐指数
1
解决办法
3077
查看次数

什么是Linux相当于MSVC++的选项/ d1reportSingleClassLayout?

我正在将开发转移到Linux但我无法找到如何在g ++或clang ++下从MSVC++获得类似于/ d1reportSingleClassLayout的输出.如果这些编译器没有这样的功能,是否有提供类似可视化的外部工具?

c++ linux

7
推荐指数
1
解决办法
690
查看次数

有没有办法转储 g++ 编译程序的类布局

使用 g++ 编译时,-fdump-class-hierarchy 以(或多或少)人类可读格式导出程序的虚表。但是,生成的文件仅包含有关 vtable 的信息,而不包含有关类布局本身的信息。我想获得我所有程序类的布局的完整列表。

clang 提供 -cc1 -fdump-record-layouts 参数来实现这一点。可以使用 -d1reportAllClassLayout 调用 MS 编译器。是否有任何 g++ 开关可以做到这一点?

c++ variables gcc g++ vtable

5
推荐指数
1
解决办法
2298
查看次数

标签 统计

c++ ×7

g++ ×3

vtable ×3

gcc ×2

gdb ×2

linux ×1

memory-layout ×1

variables ×1