如何在C ++中获取抽象(?)pimpl的调试信息?

时间:2009-03-06 05:13:40

标签: c++ visual-studio debugging pimpl-idiom

我有一个包装类,它将其工作委托给一个pimpl,而pimpl是一个指向基类/接口的指针,没有专门用于几种不同方式的数据。

像这样:

class Base
{
    void doStuff=0;
};

class Derived
{
    int x,y;
    void doStuff()
    {
        x = (x+y*2)*x; //whatever
    }
};

class Wrapper
{
    Base*   _pimpl;
    void doStuff()
    {
        _pimpl->doStuff();
    }
};

现在大部分时间都可以正常工作,但是当进入调试器时,我无法查看Derived类的x,y(因为它可能是任何东西)。通常这是无关紧要的,但是当出现问题时看到Derived的状态可能很重要,但是pimpl过多地掩盖了状态(然而这是pimpl的最初想法,所以我想我不能抱怨)。

现在我有一个tostring()函数打印出状态用于调试目的,但是想知道是否有更好的解决方案,特别是在VisualStudio中调试这种构造,但一般解决方案会更好。< / p>

由于

2 个答案:

答案 0 :(得分:4)

您是否尝试在观察窗口中将变量转换为Derived *?

答案 1 :(得分:2)

只需在Autos窗口或其中一个Watch窗口中展开树:

alt text http://www.freeimagehosting.net/uploads/626b4a37ee.png