Nan*_*rin 55 .net c# msbuild visual-studio visual-studio-2012
我在Visual Studio 2012中有一个大型解决方案,它包含可执行文件和类库项目.在调试应用程序时,一个特定类库项目中的断点未被命中.
我查看了Debug> Windows> Modules窗口,检查该项目符号的状态,并显示"无法找到或打开PDB文件".
它还在"用户代码"列下显示"否".
我注意到解决方案中还有一些自定义项目在该列中显示"否",并且它们的符号也无法加载."用户代码"下面带有"是"的任何内容似乎已经将pdb加载没有问题.但我不确定这是否相关.
我在dll上使用了dumpbin/headers,并且pdb文件的路径是正确的.
该模块绝对不在符号加载的排除列表中.
我还尝试右键单击模块窗口中的条目,选择"加载符号"并导航到dll标题中给出的路径.当我选择pdb时,它说"在此文件夹中找不到匹配的符号文件".
在删除这些文件夹和文件,清理解决方案,关闭它并重建整个文件后,我得到了这个.pdb肯定与有问题的dll同时构建.
所以很明显问题是"无法打开pdb"部分的错误消息.
我在2台计算机上试过这个,两者都表现出相同的行为.
任何人都可以提供任何建议,从这里去哪里,也许为什么在地球上对应的dll的内置pdb将不会加载它?
Nan*_*rin 42
我尝试了一些工具来检查pdb和dll是否实际匹配,并且使用chkmatch我可以看到正在运行的dll中的GUID和obj文件夹中的pdb不匹配.
事实证明,虽然项目的obj文件夹中的dll和pdb是匹配的,但是实际上通过构建后事件复制到应用程序的目标文件夹的dll是来自上一版本的旧dll.
构建后事件在该特定项目构建之前运行,或者至少完成构建,并且正在从bin中复制现有dll,随后由继续构建覆盖.
我已经通过编辑解决方案的项目依赖项来确定问题,并确保具有post-build事件的项目依赖于未加载的项目,现在pdb在调试期间加载.
对我来说,它有助于使用chkmatch工具,然后关闭并打开visual studio,进行清理和重建.现在我的pdb也被加载了.正如Nanhydrin指出的那样,您可以确保它来自Debug - > Windows - > Modules - 这个视图只能在调试期间访问.
归档时间: |
|
查看次数: |
63726 次 |
最近记录: |