假设一个代码:
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根本没有任何成员一样。
我错过了什么吗?
谢谢你丹。
1条答案
按热度按时间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的状态。