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

标签 c++ visual-studio-2010

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

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

最佳答案

似乎对我有用的唯一方法是告诉调试器在 autoexp.dat 的帮助下正确显示对象。不知道在vs2010上效果如何,我还在用2008。这个方法很适合智能指针。如果你想查看原始指针的内部,我想,你需要在 watch/quick watch 窗口中手动转换指针。如果它是某种智能指针或存储原始基指针的类,那么您可以通过这种方式使用 autoexp.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))
    )
)

关于c++ - 在调试器中查看大多数派生类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6961852/

相关文章:

c++ - EXC_BAD_INSTRUCTION(代码 = EXC_I386_INVOP,子代码 = 0x0) - 根本原因

c++ - 派生模板类

visual-studio-2010 - 在 Visual Studio 中跟踪更改、更新和 TODO

visual-studio-2010 - 如何在VS 2010中禁用缩进虚线

c++ - boost 二进制 static_visitor 和 apply_visitor

c++ - 使用 AddFontResourceEx 添加的字体在 GDI+ 中不起作用

c++ - 可变参数模板示例未编译

c# - 如何在多个项目中使用 useLegacyV2RuntimeActivationPolicy?

visual-studio-2010 - 为什么 ReportViewer 10 呈现报表的速度如此缓慢?

vb.net - 引用同一 VB.NET 项目中包含的用户控件