gpt4 book ai didi

c# - 符号文件未加载以在 Visual Studio 2012 中调试自定义项目

转载 作者:IT王子 更新时间:2023-10-29 03:48:18 26 4
gpt4 key购买 nike

我在 Visual Studio 2012 中有一个大型解决方案,其中包含可执行文件和类库项目。调试应用程序时,某个特定类库项目中的断点未命中。

我查看了Debug> Windows> Modules 窗口以检查该项目的符号状态,它显示“无法找到或打开 PDB 文件”
它还在“用户代码” 列下显示“否”
我注意到解决方案中的其他一些自定义项目在该列中显示为“否”,并且它们的符号也无法加载。在“用户代码”下带有"is"的任何内容似乎都没有问题地加载了它的 pdb。但我不确定这是否相关。

我在 dll 上使用了 dumpbin/headers 并且 pdb 文件的路径存在且正确。

该模块肯定不在符号加载的排除列表中。

我也尝试过右键单击模块窗口中的条目,选择“加载符号” 并导航到 dll header 中给出的路径。当我选择 pdb 时,它显示 “在此文件夹中未找到匹配的符号文件”

我在删除这些文件夹和文件、清理解决方案、关闭解决方案并重建整个解决方案后得到了这个。pdb 肯定是与相关 dll 同时构建的。

很明显,问题出在错误消息的“无法打开 pdb”部分。

我已经在 2 台计算机上尝试过,并且都表现出相同的行为。

谁能提供任何关于从这里去哪里的建议,也许到底为什么与 dll 对应的内置 pdb 不会为其加载?

最佳答案

我尝试了一些工具来检查 pdb 和 dll 是否真正匹配,并使用 chkmatch我可以看到正在运行的 dll 中的 GUID 与 obj 文件夹中的 pdb 不匹配。

因此结果表明,虽然项目的 obj 文件夹中的 dll 和 pdb 是匹配的,但实际上通过构建后事件复制到应用程序目标文件夹的 dll 是之前构建的旧 dll。

构建后事件在该特定项目构建或至少完成构建之前运行,并从 bin 中复制现有的 dll,随后被继续构建覆盖。

我已通过编辑解决方案的项目依赖项并确保具有构建后事件的项目依赖于未加载的项目来解决问题,现在 pdb 在调试期间加载。

关于c# - 符号文件未加载以在 Visual Studio 2012 中调试自定义项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18109575/

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