如何重置VisualStudio(VS2010,VS2012)调试器缓存
How to reset the VisualStudio (VS2010, VS2012) debugger cache?
我正试图使用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兼容(不确定它存储在哪里)之间进行更改,看看会发生什么。
- 正在VS调试器中监视映射条目
- 为什么我的 VS 代码调试器在我的C++代码周围弹跳?
- 带有 GDB 调试器的 VS 代码内存视图
- 为什么调试器引发"read access violation. this was nullptr"异常?
- VS2017调试器:没有地址,可能是由于编译器优化
- 当前不会命中断点。没有调试器目标代码类型的可执行代码与此文件关联
- 使用 Windows 10 和 MINGW 编译器在 VS Code 上使用 gdb 调试器进行调试时出错
- 如何在可视化代码中生成用于 c++ 开发的调试器?
- 为什么我的程序无法在GDB在线编译器/调试器或Visual Studio C++ 2019中运行
- Popen使Qt调试器崩溃
- 附加调试器并以编程方式获取变量地址 Visual Studio
- 在集成终端上运行vscode lldb调试器时,如何获取程序的输出?
- 宏使枚举调试器感知?
- Eclipse-C++-调试器立即终止
- 标识gdb调试器中符号的源文件名
- Visual Studio图形调试器引发读取访问冲突异常
- 如何修复使用VScode调试器gcc调试时的"找不到文件"错误
- 如果您在C++上有 Makefile 项目,如何在 VScode 中"fix"调试器?
- 为什么调试器总是跳过此程序中的一行?
- 如何重置VisualStudio(VS2010,VS2012)调试器缓存