原问题:
为什么在VS c++ release版本中,this指针的值为0?
当使用Visual Studio 2008 SP1的release版本,并选择/Zi(编译器:调试信息格式-程序数据库)和/DEBUG(连接器:生成调试信息,是),进行调试时,为什么“this”指针总是0x00000000?
编辑后的问题:
我最初的问题表述相当不清晰,很抱歉。使用Visual Studio 2008调试程序时,我可以看到所有变量,除了局部对象的成员变量。这可能是因为调试器从this指针中派生这些变量,但是VS始终显示它为0x00000000,因此无法派生当前对象的成员变量(它不知道对象的内存位置)。
当加载一个大型转储文件(类似于Windows minidump,但包含进程的整个内存空间)时,我可以查看所有局部变量(在函数中定义)和整个堆上的树状结构,即使我有指向它们的指针也可以。
例如:在Release模式下打断点,进入A::foo()
'this'将具有值0x00000000
'f_'会显示垃圾值
某种方式需要将这些信息可用于进程中。这是VS2008中缺少的功能吗?是否有其他调试器可以正确处理此问题?
class A
{
void foo() { /*break here*/ }
int f_;
};