小编use*_*073的帖子

操作系统如何检测进程崩溃

操作系统如何知道 EIP 不再是有效/合法的指令并且该应用程序已崩溃?它如何知道何时生成故障转储数据?

c++ crash x86 osdev

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

为什么vptr(虚拟表指针)指向错误的函数

我有以下类结构:

class CLASS_EXPORT A
{
public:
    virtual        bool foo1();
    virtual        bool foo2();
};

class CLASS_EXPORT B: public A{
public:
    B();
    virtual        bool foo1();
};

int main()
{
    B b;
}
Run Code Online (Sandbox Code Playgroud)

这些类位于一个 dll 内。当我查看对象“b”的虚拟指针时,它没有显示 foo2() 函数的条目。它显示了 foo1() 的条目和另一个 dll 中不同类的完全不同的条目。

我正在使用 Visual studio 2015 并使用快速监视来查看“this”指针。此外,在调试版本上进行调试时,控件会转到错误的函数。当为此调试汇编代码时,基类构造函数在基类的 this 指针内分配了错误的 vtable 指针。

00007FFA6323E6CB lea rcx,[A::`vftable' (07FFA63422CB8h)]

如果我检查 07FFA63422CB8h 处的值,它会显示不正确的函数指针

您能帮忙找出可能是什么原因造成的吗?

谢谢

c++

0
推荐指数
1
解决办法
350
查看次数

标签 统计

c++ ×2

crash ×1

osdev ×1

x86 ×1