Ben*_*Ben 6 c++ static visual-studio natvis visual-studio-2015
我正在使用Microsoft Visual Studio 2015中的.natvis文件编写调试器可视化工具.如果可能的话,我想在课程中提供一条信息.我想知道获取该变量的语法是什么.
这是C++代码的简化版本:
class MyClass
{
public:
MyClass() {}
int getAValue(size_t index)
{
static std::vector<int> numberVector;
if (numberVector.size() <= index)
{
addSomeNumbersToTheEnd(numberVector);
}
return numberVector[i];
}
}
Run Code Online (Sandbox Code Playgroud)
在调试器中,当我将鼠标悬停在MyClass的实例上时,我希望看到向量的大小,但我不知道如何引用它(或者如果可能的话).这是可视化器类型,<what goes here?>在我遇到麻烦的地方:
<Type Name="MyClass">
<DisplayString>[$(Type)] staticVectorSize={<what goes here?>}</DisplayString>
</Type>
Run Code Online (Sandbox Code Playgroud)
实际问题要复杂得多,包括奇怪的重复模板模式以创建更好的枚举对象,所以请不要评论这个有点人为的场景的无用性.
如果您可以让监视窗口在函数外部声明静态函数变量值,那么您可以使用它。但是,据我所知,仅允许在函数作用域内访问静态函数变量。由于当您不在函数内时,没有指向该对象的符号路径,因此您是 SOL。
解决方法是将静态变量移至类作用域,然后存在该变量的符号路径,您可以从那里访问它。