我正在尝试使用Qt调试大型项目,但调试时遇到问题。
它与this question中的相同,但那里的答案没有帮助,我使用的是VS2010,所以我无法安装那里提到的修复。
我用VS2008重现了这个问题(以及解决方案,见下文)。
我刚刚了解到:“鼠标悬停”功能称为DataTips。
问题:
显然,调试器正在使用一些必须存储在某处的旧信息。
以下是我的尝试:
调试器必须从其他来源获取其信息。但是从哪里来?
我需要做些什么才能使调试器清除其缓存,重新扫描我的类并更新其内部信息?
目前的调查情况:
我找到了大约6个可以获得信息的地方,例如ipch
文件夹/文件。但仍然没有成功
我对每个硬盘驱动器进行了全文搜索。它在我删除的其他项目中找到了一些pdb文件
现在我修复了错误,但我没找到它。
VS2012问题仍然存在。不过,pdb文件现在名为vc110.pdb
。
答案 0 :(得分:3)
全文搜索发现了一些.pdb
个文件(主要是vc100.pdb),部分位于链接到同一个lib的其他项目的目录中,其中包含旧的符号名称。
我删除了所有找到的.pdb
(和.idb
)个文件,重新编译,现在再次显示正确的行为。
遇到同样问题的人应该尝试这个解决方案。
//Yet I have no answers as to
//- where exactly the debugger searches for its information and
//- in which way the pdb files are (re)created and interconnected and
//- how the problem came to be in the first place.
修改强>
我能够重现这个问题。我想我知道发生了什么:
我包含了几个基于公共库lib的库。如果我重建它们,基本库中的更改只会反映在其他包含的库中。如果我在基础库中进行一些小的更改后没有重建这些库(在我的情况下:在类中添加成员),相应的 vc100.pdb
文件保持不变。由于包含路径设置为该库的目录,因此VS调试器似乎使用了其vc100.pdb文件。
解决方案是删除这些vc100.pdb文件或重建所有库。
<强> VS2012 强>
文件名从版本更改为版本。 VS2012使用vc110.pdb
等等。我现在删除代码目录+子目录中的所有* .pdb文件。
答案 1 :(得分:2)
调试信息通常存储在.pdb文件中。尝试搜索并删除它们。 在项目属性中> C / C ++&gt;一般,什么是调试信息格式设置?尝试在程序数据库(使用pdb文件)和C7兼容之间进行更改(不确定存储它的位置),看看会发生什么。