【问题标题】:Debugging types with MSVC使用 MSVC 调试类型
【发布时间】:2020-06-26 08:49:33
【问题描述】:

考虑以下代码:

template<class T>
void foo()
{
    T x;
}

调试时如何找到 x 的类型?关注列表中添加typeid(x).name()无效。

人们通常如何调试模板元编程?

【问题讨论】:

  • std::cout &lt;&lt; __PRETTY_FUNCTION__ &lt;&lt; std::endl;
  • @PiotrSkotnicki __PRETTY_FUNCTION__ 是一个 gcc 扩展
  • 如果你依赖std::cout,不如使用std::cout &lt;&lt; typeid(x).name()。这没有抓住重点。

标签: c++ visual-studio visual-c++ c++17 visual-studio-2019


【解决方案1】:

只需将x 本身添加到监视列表即可。监视窗口的第三列将列出x的实际类型,即用于实例化foo&lt;T&gt;T

【讨论】:

  • 哇!我没有看到那个专栏!它一直在我的屏幕之外,我不得不水平滚动。发现了新功能。
  • 咳咳!类型栏为空...i.imgur.com/n64489K.png
  • @superdeveloper:嗯,变量x 必须存在,这意味着您需要在x 范围内的某处打断点。如果没有foo 的实例正在执行,则不存在x
  • 我可以通过查看程序集来推断类型。对于任何好奇的人,它是 Alt+8。我仍然会接受这个答案。至于为什么类型列是空的,我不知道 - 我能够看到该值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-26
  • 2023-03-06
  • 1970-01-01
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
  • 2020-08-16
相关资源
最近更新 更多