gpt4 book ai didi

c++ - 如何重置 VisualStudio(VS2010、VS2012)调试器缓存?

转载 作者:太空狗 更新时间:2023-10-29 20:42:45 25 4
gpt4 key购买 nike

我正在尝试使用 Qt 调试一个大型项目,但我在调试时遇到了问题。与this question中的相同,但那里的答案没有帮助,我使用的是 VS2010,所以我无法安装那里提到的修复程序。
我用 VS2008 重现了这个问题(以及解决方案,见下文)。

我刚了解到:“鼠标悬停”功能称为数据提示。

问题:

  • 成员变量的鼠标悬停和“本地”窗口内容错误(与上面链接的问题比较)。
  • 鼠标悬停和“本地”窗口内容显示旧成员名称。我将一个变量从“大小”重命名为“sizeMm”,但调试器仍然显示“大小”。

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

这是我尝试过的:

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

调试器必须从另一个来源获取信息。但是从哪里来呢?

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


目前调查状态:
我发现了大约 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.

编辑

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

我包括了几个基于公共(public)基础库的库。如果我重建它们,基本库中的更改只会反射(reflect)在其他包含的库中。如果我在基本库中做了一些小改动后没有重建这些库(在我的例子中:向类中添加一个成员),适当的 vc100.pdb 文件仍然存在不变。因为 include path 被设置为该库的目录,它的 vc100.pdb 文件似乎被 VS 调试器使用。

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


VS2012

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

关于c++ - 如何重置 VisualStudio(VS2010、VS2012)调试器缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17721032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com