符号文件不加载在Visual Studio 2012中debugging自定义项目

我在Visual Studio 2012中有一个很大的解决scheme,它由可执行文件和类库项目组成。 在debugging应用程序时,某个特定类库项目中的断点不会被触发。

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

我已经在dll上使用了dumpbin / headers ,并且pdb文件的path存在且正确。

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

我也试着右键单击模块窗口中的条目,select“加载符号”并导航到dll头部中给出的path。 当我select的PDB它说: “一个匹配的符号文件没有在这个文件夹中find”

我删除这些文件夹和文件后,得到这个,清理解决scheme,closures它,重build整个事情。 pdb绝对是和dll相同的时候构build的。

所以很显然,问题是“无法打开pdb”部分的错误信息。

我已经在2台电脑上试了这个,都performance出相同的行为。

任何人都可以提供任何build议从哪里去,也许为什么在地球上build立的对应于DLL的pdb不会加载它?

我尝试了几个工具来检查pdb和dll实际上是否匹配,使用chkmatch我可以看到正在运行的dll中的GUID和obj文件夹中的pdb不匹配。

所以事实certificate,虽然项目的obj文件夹中的dll和pdb是匹配的,但实际上通过构build后事件复制到应用程序目标文件夹的dll是以前版本中的旧dll。

生成后事件在特定项目build立之前就已经运行了,或者至less已经完成了构build,并且正在从bin中复制现有的dll,然后由继续的构build覆盖。

我通过编辑解决scheme的项目依赖关系来解决问题,并确保具有生成后事件的项目依赖于未加载的项目,现在在debugging期间加载pdb。

我只是从启动项目文件夹中删除bin和obj文件夹,并重build解决scheme。

对我来说,我刚刚从IIS中删除了项目,并再次创build它,它工作正常

对我来说,它有助于使用chkmatch工具,然后closures并打开visual studio,使清洁和重build。 现在我的pdb也加载。 Nanhydrin指出,你可以确定它是从Debug – > Windows – > Modules中确定的 – 这个视图只能在debugging过程中访问。

在我的情况下,引用dll的旧版本是在我的GAC。 清理出来,它工作。

我发现我收到这个消息的项目在构build时正在进行优化。

我进入项目属性,编译选项卡,高级编译选项…并取消选中Enable Optimizationscheckbox

取消选择启用优化

从解决scheme中删除项目,并再次将其添加到为我工作的解决scheme。 🙂

在这里派对晚了 – 以防万一这是有帮助的。

我们有几个独立的网站(在Visual Studio中有不同的解决scheme)。 在其中一个网站的初始加载时,我们正在打电话给其他网站,将返回一个图像。

这两个网站引用了一个共同的DLL,但是在一个网站上工作时,并没有意识到其他网站已经被留在一个“发布”版本 – 在网站加载后,有问题的DLL被重build,但没有符号。

荣誉Nanhydrin提到模块debugging窗口(非常有帮助),并把我与后build设事件的正确轨道。

提醒:把项目放到“debugging”configuration…对于像我这样忘记和感到愚蠢的人。

从另一个线程为我工作的答案: https : //stackoverflow.com/a/28476665/5969306
– 在Visual Studio中:项目属性 – >生成 – >高级button – >debugging信息下拉并确保值不是“无”。

我只是有这个问题,并认为我会把我的修复在这里,因为它在未来帮助别人(也许甚至是我自己?)。

确保当您连接到远程服务器上的进程时,“附加到”设置为

自动确定要debugging的代码的types

为此,在提供服务器限定符并且可以看到进程列表时,单击“附加到”input旁边的“select”button。

图片1 然后,select“自动确定要debugging的代码types”,然后确定出来,然后附上。

图片2
这至less为我解决了这个问题。

我在我的debugging窗口中有这样一行:

没有加载模块“MyModule.dll”的符号。

我删除了“项目属性 – >生成”中的“优化代码”选项。 错误消失了。

这个问题可能是由于项目中使用的dll的错误引用

删除当前项目中的objbin文件夹并重新生成项目。