繁体   English   中英

Visual Studio 2015 Natvis如何显示函数静态变量?

[英]How can Visual Studio 2015 Natvis display a function static variable?

我正在使用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];
    }
}

在调试器中,当我将鼠标悬停在MyClass的实例上时,我希望看到向量的大小,但我不知道如何引用它(或者如果可能的话)。 这是可视化器类型,在我遇到问题的地方有<what goes here?>

<Type Name="MyClass">
    <DisplayString>[$(Type)] staticVectorSize={<what goes here?>}</DisplayString>
</Type>

实际问题要复杂得多,包括奇怪的重复模板模式以创建更好的枚举对象,所以请不要评论这个有点人为的场景的无用性。

如果您可以让您的监视窗口在函数外部声明静态函数变量值,那么您可以使用它。 但是,在AFAIK中,只允许在函数范围内访问静态函数变量。 由于当你不在函数内时没有到该对象的符号路径,你就是SOL。

解决方法是将静态变量移动到类范围,然后有一个指向该变量的符号路径,您可以从那里访问它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM