假设我有一个模板类:
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 窗口,注意当它中断时,断点旁边有一个小+
,它将打开所有不同的实例。
粗体中的行是当前处于事件状态的断点。
现在,很遗憾,断点窗口没有显示实际的模板实例化。
但是,您可以使用调用堆栈来查看当前使用的是哪个实例化。
或者,您可以右键单击每个断点,然后选择“Go To Disassembly”。
这可能会给您一个关于实际模板实例化的提示。 然后,您可以选择要保持事件的断点和类型。
编辑: 您还可以将 Function 列添加到 Breakpoints 窗口并查看实际的模板函数。
关于c++ - 我可以仅为特定模板实例化添加断点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27729702/