如何重置VisualStudio(VS2010,VS2012)调试器缓存

How to reset the VisualStudio (VS2010, VS2012) debugger cache?

本文关键字:VS2012 调试器 缓存 VS2010 何重置 VisualStudio      更新时间:2023-10-16

我正试图使用Qt调试一个大型项目,但调试时遇到了问题。这和这个问题中的一样,但那里的答案没有帮助,我正在使用VS2010,所以我无法安装上面提到的修复程序
我复制了VS2008的问题(以及解决方案,见下文)。

我刚刚了解到:"鼠标悬停"功能叫做DataTips

问题:

  • 成员变量的mouseover和"local"窗口内容是错误的(与上面链接的问题相比)
  • mouseover和"local"窗口内容显示旧成员名称。我将一个变量从"size"重命名为"sizeMm",调试器仍然显示"size"

显然,调试器正在使用一些必须存储在某个地方的旧信息

以下是我尝试过的:

  • 重新启动Visual Studio
  • 清理并重建了我的项目文件夹
  • 尝试了不同的项目设置(例如,再次打开和关闭优化)
  • 手动删除.obj文件
  • 手动删除.sdf文件
  • 对班里的成员重新排序
  • 从类中删除了大多数Qt代码
    编辑:
  • 正如Neil Kirk在回答中所建议的那样,我尝试了编译器选项/Z7、/Zi和/Zi
    /Z7应该将调试信息写入到对象文件中
  • 全部删除了所有内容/调试目录

调试器必须从其他源获取其信息。但从哪里来?

我必须做些什么才能使调试器清除其缓存,重新扫描我的类并更新其内部信息


当前调查状态:
我发现了大约6个信息可能存在的地方,例如ipch文件夹/文件。但仍然没有成功
我对每个硬盘进行了全文搜索。它在我删除的其他项目中发现了一些pdb文件
现在我修好了程序错误,但我没有找到它。


VS2012问题仍然存在。不过,pdb文件现在被命名为vc110.pdb

全文搜索发现一些.pdb文件(大部分是vc100.pdb),部分位于链接到同一库的其他项目的目录中,其中包含旧的符号名称。

我删除了所有找到的.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.

编辑

我能够重现这个问题。我想我知道发生了什么:

我包含了几个基于公共基本库的库。如果我重建了基本库中的更改,它们只会反映在其他包含的库中。如果在对基本库进行一些小的更改(在我的情况下:向类添加成员)后不重新生成这些库,则相应的vc100.pdb文件将保持不变。由于包含路径设置为该库的目录,因此VS调试器似乎使用了它的vc100.pdb文件。

解决方案是删除这些vc100.pdb文件,或重建所有库


VS2012

文件名随版本的变化而变化。VS2012使用vc110.pdb等等。我现在删除代码目录+子目录中的所有*.pdb文件。

调试信息通常存储在.pdb文件中。尝试搜索并删除它们。在项目属性>C/C++>常规中,什么是调试信息格式设置?尝试在程序数据库(使用pdb文件)和C7兼容(不确定它存储在哪里)之间进行更改,看看会发生什么。