【发布时间】:2013-07-18 10:31:53
【问题描述】:
我正在尝试使用 Qt 调试一个大型项目,但我在调试时遇到了问题。
它与this question 中的相同,但那里的答案没有帮助,我使用的是 VS2010,所以我无法安装那里提到的修复程序。
我用VS2008重现了这个问题(以及解决方案,见下文)。
我刚刚了解到:“鼠标悬停”功能称为 DataTips。
问题:
- 成员变量的鼠标悬停和“本地”窗口内容错误(与上面链接的问题相比)。
- 鼠标悬停和“本地”窗口内容显示旧成员名称。我将一个变量从“size”重命名为“sizeMm”,调试器仍然显示“size”。
很明显,调试器正在使用一些必须存储在某处的旧信息。
这是我尝试过的:
- 重新启动 Visual Studio
- 清理并重建了我的项目文件夹
- 尝试了不同的项目设置(例如,再次打开和关闭优化)
- 手动删除 .obj 文件
- 手动删除 .sdf 文件
- 对类中的成员重新排序
- 从类中删除了大部分 Qt 代码
编辑: - 正如 Neil Kirk 在回答中建议的那样,我尝试了编译器选项 /Z7、/Zi 和 /ZI。
/Z7 应该将调试信息写入目标文件。 - 已删除所有 ./Debug 目录中的所有内容
调试器必须从其他来源获取信息。但从哪里来?
我必须做些什么才能让调试器清除它的缓存、重新扫描我的类并更新它的内部信息?
目前调查情况:
我发现了大约 6 个可能存在信息的地方,例如ipch 文件夹/文件。但还是没有成功。
我对每个硬盘进行了全文搜索。它在我删除的其他项目中发现了一些 pdb 文件。
现在我修复了这个错误,但我没有找到它。
VS2012 问题依然存在。不过,pdb 文件现在命名为 vc110.pdb。
【问题讨论】:
-
关闭优化后是否编译?另外,你是怎么做到的?
-
@LuchianGrigore 我编译时使用了优化 (
/Ox) 和没有优化 (/Od)。启用优化后,调试器会发疯。 ;-) 我用“清理”和“重新创建”编译?从项目文件夹资源管理器中的项目文件夹(德语“Projektmappe”)中。快捷键是 Ctrl-Alt-F7。 -
是的,启用优化后,调试器会发疯 - 您看到的代码将被优化,因此调试器将向您展示它可以做什么.. 您不会看到代码单步执行就像在未优化的构建中一样。
-
@gbjbaanb 澄清一下:所有其他测试中的优化都已关闭。
标签: c++ visual-studio qt debugging