C++ Qt Creator没有';t在具有多个实例化的模板化代码中的断点上停止

C++ Qt Creator没有';t在具有多个实例化的模板化代码中的断点上停止,c++,visual-studio-2017,qt-creator,breakpoints,template-instantiation,C++,Visual Studio 2017,Qt Creator,Breakpoints,Template Instantiation,我在Qt Creator中遇到了一个看起来像bug的问题,但在提交票据之前,我希望收集更多信息:这是可复制的、已知的(可能已经有修复程序)等 我正在使用基于Qt5.14.0(MSVC 2017)的QtCreator 4.11.0。如果我将断点添加到具有多个实例化的模板代码中,默认情况下,该断点从不触发。让我们创建一个简单的应用程序(例如控制台应用程序),定义一个tempate函数并在其中添加一个断点: 模板 T func(T val) { return val*2;//在此处放置断点 } int

我在Qt Creator中遇到了一个看起来像bug的问题,但在提交票据之前,我希望收集更多信息:这是可复制的、已知的(可能已经有修复程序)等

我正在使用基于Qt5.14.0(MSVC 2017)的QtCreator 4.11.0。如果我将断点添加到具有多个实例化的模板代码中,默认情况下,该断点从不触发。让我们创建一个简单的应用程序(例如控制台应用程序),定义一个tempate函数并在其中添加一个断点:

模板
T func(T val)
{
return val*2;//在此处放置断点
}
int main(int argc,char*argv[])
{
qcore应用程序(argc、argv);
func(1);
返回a.exec();
}
函数的实现是不相关的,重要的是我们只有一个实例化
func
。一切都按预期进行,但如果我们再添加一个实例化,就会发生一些变化:

模板
T func(T val)
{
return val*2;//在此处放置断点
}
int main(int argc,char*argv[])
{
qcore应用程序(argc、argv);
func(1);
func(1L);
返回a.exec();
}
现在我们有了
func
func
,这反映在断点视图中(Qt Creator现在将断点扩展为两个子项,每个子项标识实例化的函数)。现在两个断点实例都没有被激发

有趣的是,如果我们在调用
func
(在非模板代码中)之前的某个地方再添加一个断点,调试器将在所有3个断点上停止。看起来它需要在第一次停止时执行一些初始化


这很烦人,因为每次我计划跟踪我的代码时,我都必须在
main
中添加一个断点。我在过时的Qt Creator 3.5.1中从未遇到过此问题。这是一个bug吗?它能在合理的现代版本中重现吗?是否存在任何可能触发此行为的设置?

同样面对这一点,非常恼人…@Alglandine,我已经联系了Qt团队,看起来问题在以后的版本中得到了解决。但是我还没有验证…谢谢:)我使用了5.14.2,它仍然存在。同样使用最新的qtcreator也面对这个问题,非常烦人…@alglandine,我已经联系了Qt团队,看起来这个问题在以后的版本中已经解决了。但是我还没有验证…谢谢:)我使用了5.14.2,它仍然存在。也可以使用最新的QtCreator