6

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

实际问题要复杂得多,涉及到奇怪地重复出现的模板模式来创建更好的枚举对象,所以请不要评论这个有点做作的场景的无用性。

4

1 回答 1

0

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

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

于 2016-04-08T01:05:05.680 回答