【问题标题】:How to view C++ template argument in watch window in VS2015如何在VS2015的监视窗口中查看C++模板参数
【发布时间】:2017-01-18 22:10:41
【问题描述】:

我正在调试一些 C++ 代码,其中包含一些以 T 作为模板参数的 C++ 模板。我想在手表(或鼠标悬停)中查看 T 是什么类型。

当我将 T 添加到 watch 时,它不显示类型。有没有办法在调试器中解析 T 参数?

我可以在调用堆栈上看到模板参数类型。由于类型非常复杂,他调用堆栈中的行很长,无法适应我的显示。而且很难阅读。

有没有办法解决调试器监视中的 T 参数?

我使用 Visual Studio 2015 Update 3。

【问题讨论】:

    标签: c++ templates visual-studio-2015 watch


    【解决方案1】:

    _First_Last添加到watch寡妇,它们的类型为_Iter,将显示解析的类型。我认为没有其他方法:在编译时 _Iter 被使用的任何类型替换,因此一旦构建了应用程序,就不会再注意到名称 _Iter 了。

    【讨论】:

    • 如果源代码中没有 T 的实例怎么办?
    • 不太清楚你的意思:当没有实例化时,也没有类型可以弄清楚?而且在任何情况下实际上也没有编译的源代码,所以在可执行文件中没有类的痕迹,所以也没有什么可调试的(就像任何非模板类或函数一样)
    • 那么 typeid(T) 或一些函数 result = someMagicFunction()
    • 同样的故事。没有 T 类型的变量,因此编译器在目标文件中留下的唯一类型信息是完整的函数类型(即 someMagic),它可以在调用堆栈或反汇编视图中显示。
    猜你喜欢
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 2011-02-14
    • 2019-11-06
    • 1970-01-01
    • 2011-09-30
    • 2018-05-08
    相关资源
    最近更新 更多