c++ - 我可以仅为特定模板实例化添加断点吗?

标签 c++ visual-studio debugging templates breakpoints

假设我有一个模板类:

template <typename T>
class A
{
public:
   void foo() 
   {
      int i = 0; //breakpoint here only for type A<int>
   }
}

我可以在 Visual Studio 中以某种方式添加一个断点,它只会在 foo 内部中断吗?对于某个实例化?

只喜欢 A<int>::foo ?

假设我有 100 个不同类型的模板化 A 实例。

编辑:

我确实知道如何以我可以专门化某种类型的方式进行实例化。
问题是我可以在没有专业的情况下做到吗?

最佳答案

我找到了。
只需在您想要的行中放置一个断点(我将展示一个带有 std::shared_ptr<> 的示例)。
然后转到Breakpoints 窗口,注意当它中断时,断点旁边有一个小+,它将打开所有不同的实例。
粗体中的行是当前处于事件状态的断点。

Breakpoint on a templated function

现在,很遗憾,断点窗口没有显示实际的模板实例化。
但是,您可以使用调用堆栈来查看当前使用的是哪个实例化。 或者,您可以右键单击每个断点,然后选择“Go To Disassembly”。

这可能会给您一个关于实际模板实例化的提示。 然后,您可以选择要保持事件的断点和类型。

Disassembly

编辑: 您还可以将 Function 列添加到 Breakpoints 窗口并查看实际的模板函数。

enter image description here

关于c++ - 我可以仅为特定模板实例化添加断点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27729702/

相关文章:

visual-studio - 如何使用单键快捷方式关闭VS2008中的所有工具窗口?

debugging - 如何在 Angular 2 中以编程方式启用路由跟踪?

c++ - 在 C++ 中使用函数指针调用函数

C++、Googlemock - 测试本地对象

html - Visual Studio 2010 HTML 设计器呈现与 IE8 不同?

python - 为什么(0-6)是-6 = False?

c# - 如何在双击文件后立即附加调试器?

c++ - 仅显示灰色的 OpenGL 反射着色器

c++ - Qt中的函数匹配

c# - 如何防止方法在 C# .NET 中接受 2 false bool?