我正在调试用户转储文件,并且在堆栈跟踪的顶部有此类成员函数
- 堆栈跟踪是这样的 -
msvcr80.dll!__invalid_parameter_noinfo() + 0xc 字节 - 第一帧
msvcr80.dll!__invalid_parameter_noinfo() + 0xc 字节 - 第二帧
myDLL!myClass::myClassMemFunc(int val = 90) - 第三帧
现在,当我跳转到第 3 帧时——“this”指针值无效(“this”值是从 ECX 寄存器中检索的——但是 ECX 寄存器值在上面堆栈的前两个函数中发生了变化痕迹 - ) - 所以我看不到我的类对象的实际成员变量 -
但是我知道我的类对象的地址 - 这是 0x0012ECE0
当我试图用 - 观察那个内存地址时 (我的类(class)*)(0x0012ECE0)
我得到一个 CXX0019:错误:类型转换错误
甚至 (myClass)(0x0012ECE0) 也会产生相同的错误。
我是不是做错了什么? - 检索类对象值的正确方法是什么?
最佳答案
只是盲目猜测:试试 (myDLL!myClass*)(0x0012ECE0)
另外一个问题,你怎么确定是你对象的地址呢?
作为旁注,尝试 windbg - 在内存/堆栈周围查找对象要简单得多。
关于windows - 在 Visual Studio 的内存地址观察一个类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/876803/