Qt Creator中CDB加载变量非常缓慢

6
我尝试了很多方法来帮助设置Qt Creator中的CDB调试器,但是当使用它时,加载本地变量仍然需要很长时间。

我的设置如下:

  • Windows 10 64位
  • Qt 5.6(使用源代码安装)
  • Qt Creator 3.6.1
  • Microsoft Visual Studio 14(2015)(32位和64位编译器都安装了)
  • Windows SDK(用于调试工具=CDB)

在“选项”->“调试”中的“常规”选项卡列出了自动检测到的源代码:

Source: Q:/qt5_workdir/w/s
Target: C:\Qt\5.6\Src

我的符号服务器和缓存设置在 CDB 路径中,如下所示:

srv*http://msdl.microsoft.com/download/symbols
cache*C:\Qt\CDB-symbols-cache

第一次运行调试器时,它会用大约70MB的(可能是下载的)数据填充此目录,但在后续运行中似乎不会更改。

我怀疑要么加载的源代码需要很长时间(尽管我有SSD),要么CDB重新下载符号而不是使用缓存。有什么建议吗?

编辑:根据请求,在我的系统上进行.sympath命令的结果如下:

符号搜索路径为:srv*

扩展的符号搜索路径为:cache*;SRV* https://msdl.microsoft.com/download/symbols

************* 符号路径验证摘要 **************

响应时间 (ms) 位置

Deferred
srv*


3
有些情况下问题可能是:a) 调试器版本错误(x86 应用程序与 x64 调试器不匹配);b) 在观察列表中的表达式(据说即使在界面中删除了,它们也可能会保留下来,请检查位于 AppData\Roaming\QtProject 下的 default.qws 文件)。我遇到了非常类似的问题,不过在我的情况下,cdb.exe 在显示本地变量之前会持续占用最大 CPU 使用率 几分钟 - Abstraction
2
@抽象化 不是一个解决方案,但是既然我问了,我已经将Qt更新到5.7,VS2015更新到2,并重新安装了更高版本的Windows SDK(无法更新)。问题本质上消失了,因为CDB现在以与MingW工具链调试器相当的方式加载变量(相对快速)。我认为之前的混合中存在某些不兼容性。所以如果您可以尝试更新看看是否有帮助。 - Resurrection
请问您能展示一下.sympath的确切输出吗? - Thomas Weller
@ThomasWeller 我已经将该命令的输出添加到帖子中。 - Resurrection
1
我有同样的问题。在wiki中读到了很多WARNING: Unable to verify checksum for ...dll,但是无法在我的项目上尝试他们的解决方案,也许它可以帮助你。 - ymoreau
3个回答

4

我遇到了与QtCreator 4.12相同的问题,通过删除AppData\Roaming\QtProject\default.qws解决,正如上面评论中Abstraction所建议的那样


3
我曾遇到QtCreator 4.0.2和VS2015相同的问题,以下是我的解决方案。
  1. 符号包下载Microsoft符号包。
  2. 将其复制到本地文件夹(D:\ Symbols)中。
  3. 在Qt Creator中,选择“工具”->“选项”->“调试器”->“CDB路径”,选择“插入符号服务器”,并选择本地文件夹。最后效果如下图所示:

enter image description here


2
最终,它仍然相当慢,现在我正在使用Visual Studio,其中调试和检查变量至少快了20倍。 - vinayan

0

我尝试了以上所有方法,但都没有起作用,不过有一件事起了作用:将文件default.qws重命名。

通常加载调试器需要10秒钟,但现在需要10分钟。深入分析后,我发现问题出在断点上:如果断点设置在不属于项目的文件上,调试器会尝试为每个已加载的模块/DLL解析断点,使得整个过程变得非常缓慢。

解决方案是编辑文件default.qws并删除那些设置在不存在的文件上的断点,这样就可以恢复原来的速度了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接