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

时间:2011-08-05 19:51:42

标签: c++ visual-studio-2010

我正在编写一个C ++项目并构建一个包含各种继承相关类型的DAG。我在施工后放置了一个断点,我想查看DAG。但调试器只显示基类。它将命名__vfptr条目旁边最派生的类型,但我实际上无法查看它的内容并验证它们是我期望的那样。有没有办法直接在Locals窗口中查看派生类型最多的类型?

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

1 个答案:

答案 0 :(得分:2)

似乎对我有用的唯一方法是告诉调试器在autoexp.dat的帮助下正确显示对象。不确定它在vs2010中的效果如何,我还在使用2008.这种方法非常适合智能指针。如果您正在尝试查看原始指针,我猜,您需要在监视/快速监视窗口中手动转换指针。如果它是某种smartpointer或存储该原始基指针的类,那么您可以通过这种方式使用autoexp.dat完成它(假设您的基本ptr被称为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))
    )
)

}