这是 Qt Creator 分析器中的错误吗
Is that a bug in Qt Creator analizer
在处理一些代码时,我遇到了 QT Creator 性能下降的问题。实际上它启动了一个占用 100% CPU 的线程,无限循环:即使关闭 IDE 进程而不杀死它也是不可能的。这在我的机器上完全可以重现。在提交错误之前,我希望得到其他用户的确认,并收集 QT Creator、OS、编译器、STL 等版本的一些统计数据。代码需要 C++11 和更高版本。
经过一些调查,我将我的代码缩减为重现问题的最短样本(不要看代码的语法,问题在于 IDE 如何处理它):
#include <set>
int main() {
std::set<int> s;
auto iter = s.insert(1).first;
iter->second;
return 0;
}
亮点:
- 自动很重要
- 可以使用 map 而不是 set
重现相同的行为
- insert 很重要,因为它 returns 不是一个简单的迭代器而是一对
- 行 iter->second 在语法上不正确,但这并不重要(您可以使用 std::set< std::pair> 使其正确)。问题是 IDE 在 iter-> 之后崩溃,无论它意味着什么。
我的配置是:QT Creator 3.5.1基于Qt 5.5.1(MSVC 2013,32位); Windows10.
自 Qt Creator 3.5 以来发生了很多事情。代码模型是全新的,基于 Clang。因此,我无法使用 Qt Creator 4.9 重现您的问题。 (是的,旧的代码模型有一些限制和错误。)
一般来说,在准备错误报告之前,请始终确保您拥有最新的受支持软件版本。
在处理一些代码时,我遇到了 QT Creator 性能下降的问题。实际上它启动了一个占用 100% CPU 的线程,无限循环:即使关闭 IDE 进程而不杀死它也是不可能的。这在我的机器上完全可以重现。在提交错误之前,我希望得到其他用户的确认,并收集 QT Creator、OS、编译器、STL 等版本的一些统计数据。代码需要 C++11 和更高版本。
经过一些调查,我将我的代码缩减为重现问题的最短样本(不要看代码的语法,问题在于 IDE 如何处理它):
#include <set>
int main() {
std::set<int> s;
auto iter = s.insert(1).first;
iter->second;
return 0;
}
亮点:
- 自动很重要
- 可以使用 map 而不是 set 重现相同的行为
- insert 很重要,因为它 returns 不是一个简单的迭代器而是一对
- 行 iter->second 在语法上不正确,但这并不重要(您可以使用 std::set< std::pair> 使其正确)。问题是 IDE 在 iter-> 之后崩溃,无论它意味着什么。
我的配置是:QT Creator 3.5.1基于Qt 5.5.1(MSVC 2013,32位); Windows10.
自 Qt Creator 3.5 以来发生了很多事情。代码模型是全新的,基于 Clang。因此,我无法使用 Qt Creator 4.9 重现您的问题。 (是的,旧的代码模型有一些限制和错误。)
一般来说,在准备错误报告之前,请始终确保您拥有最新的受支持软件版本。