在调试器中查看大多数派生类型



我正在编写一个c++项目并构建各种与继承相关的类型的DAG。我在构造之后放置了一个断点,我想查看DAG。然而,调试器将只显示基类。它将在__vfptr条目旁边命名最派生的类型,但是我实际上不能查看它的内容并验证它们是我所期望的。有什么方法可以直接在Locals窗口中查看最派生的类型吗?

我的目标是x64,如果这是相关的

对我来说似乎唯一可行的方法是告诉调试器在autoexp.dat的帮助下正确显示对象。不确定它在vs2010中会有多好,我仍然在使用2008。这种方法非常适合智能指针。如果你想看看里面的原始指针,然后,我猜,你需要手动转换指针在手表/快速手表窗口。如果它是某种类型的智能指针或存储原始基指针的类,那么你可以简单地通过autoexpt .dat这样做(假设你的基指针名为m_ptr):

smart_ptr<*>{
preview
(
    #if (($e.m_ptr)!=0)
    (
    #(
        "smart_ptr ",
        (*(($T1 *)$e.m_ptr))
    )
    )
    #else
    (
        #("<Bad Ptr>")
    )
)
children
(
    #(
        ptr: (*(($T1 *)$e.m_ptr))
    )
)

}

最新更新