我在 Visual Studio 2012 中有一个大型解决方案,其中包含可执行文件和类库项目。
调试应用程序时,不会命中某一特定类库项目中的断点。
我看了看调试>窗口>模块窗口检查该项目的符号状态,它说“找不到或打开 PDB 文件”.
它还说"No"在下面“用户代码” column.
我注意到解决方案中还有一些其他自定义项目在该列中显示“否”,并且它们的符号也无法加载。 “用户代码”下带有“是”的任何内容似乎都已加载 pdb 没有问题。但我不确定这是否相关。
我用过转储箱/标题在 dll 上,pdb 文件的路径存在且正确。
该模块绝对不在符号加载的排除列表中。
我还尝试右键单击模块窗口中的条目,选择“加载符号”并导航到 dll 标头中给出的路径。当我选择 pdb 时,它说“在此文件夹中找不到匹配的符号文件”.
在删除这些文件夹和文件、清理解决方案、关闭它并重建整个内容后,我得到了这个。
pdb 肯定是与相关 dll 同时构建的。
很明显,问题是错误消息的“无法打开 pdb”部分。
我已经在两台计算机上尝试过此操作,并且两台计算机都表现出相同的行为。
任何人都可以提供关于从这里去哪里的任何建议,也许为什么与 dll 相对应的内置 pdb 不会加载它?
我尝试了一些工具来检查 pdb 和 dll 是否确实匹配,并使用chkmatch http://www.debuginfo.com/tools/chkmatch.html我可以看到正在运行的 dll 中的 GUID 与 obj 文件夹中的 pdb 不匹配。
因此,事实证明,尽管项目的 obj 文件夹中的 dll 和 pdb 是匹配的,但实际上通过构建后事件复制到应用程序的目标文件夹的 dll 是先前构建中的旧 dll。
构建后事件在特定项目构建之前运行,或者至少完成构建,并从 bin 中复制现有 dll,该 dll 随后被继续构建覆盖。
我通过编辑解决方案的项目依赖项并确保具有构建后事件的项目依赖于未加载的项目来解决该问题,现在 pdb 在调试期间加载。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)