debugging VS2015调试器无法看到正向声明的c++类的成员

scyqe7ek  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(115)

假设一个代码:
ClassA.h

class ClassAImpl;

class ClassA
{
public:
    ClassA();
    // ... some other methods here

private:
    ClassAImpl *m_classAImpl;
};

字符串
ClassA.cpp:

#include "ClassA.h"

class ClassAImpl
{
public:
    ClassAImpl(int field) : m_Field(field) {}

public:
    int m_Field;
    // ... other class members here
};

ClassA::ClassA()
{
    m_classAImpl = new ClassAImpl(123);
}

// ... etc


现在,当我调试这段代码,并检查一个类型为ClassA的变量时,我不能检查m_classAImpl。调试器只显示了一个没有任何成员的指针(例如,我想检查m_Field)。就好像ClassAImpl根本没有任何成员一样。
我错过了什么吗?
谢谢你丹。

vjhs03f7

vjhs03f71#

也许你可以使用.natvis文件来声明前向声明类的成员,.natvis文件声明的信息将包含在pdb文件中。
https://learn.microsoft.com/en-us/visualstudio/debugger/create-custom-views-of-native-objects?view=vs-2022
许多stl类在STL.natvis中声明了它们的状态。
例如,std::mutex在STL.natvis中声明了锁状态,在调试监 windows 口中,您不能监视std::mutex的成员,但可以监视std::mutex的状态。

相关问题