首次异常-System.pdb未加载。

15

我使用VS2017,当我按F5时会收到以下消息:

enter image description here

仅在某些项目中发生,即使我在VS选项下禁用了符号支持。尽管过去,在相同的项目中,即使启用了符号支持,它也不会抛出异常。
因此,由于我认为这必须是某种缓存的VS设置项目特定的问题,我删除了bin、obj、.vs、SymbolSource文件夹,但结果还是一样。
如果我启用"Just My Code",它就不会抛出异常,但这不是我想要的,因为我无法调试已经具有符号的程序集。
据我所知,即使启用符号支持,如果在VS选项中没有声明相关的符号服务器,它也不应该抛出异常。
这种行为不仅针对System.dll,甚至在附加到我没有符号的外部进程时也会发生,这意味着使用"仅加载指定模块"VS选项进行过滤也不是我想要的。
那么,有人有什么想法可以避免这种烦人的异常,同时允许我利用已配置的其他程序集的符号支持吗?

我想要中断,但只有在我有符号时才中断,因为过去它通常会中断。我试图理解为什么现在它会在我没有符号的程序集上中断。 - Apostolis Bekiaris
4个回答

11

这意味着你想要进入 .net Framework 源代码:

http://referencesource.microsoft.com/setup.html

http://referencesource.microsoft.com/indexedpdbs.txt

实际上,我们之前已经向VS 2017的产品团队报告了这个问题:

.NET源代码调试仍然无法正常工作

如果你真的想避免这个问题,我建议你在“工具” ->“选项” ->“调试”下禁用"启用.NET Framework源代码步进"等设置。

为了调试.NET框架源代码,我们需要:

禁用"Just My Code"

禁用属性和运算符的跳过

禁用要求源文件与原始版本完全匹配

启用.NET Framework源代码步进

启用源服务器支持

因此,只需使用与上述选项相反的设置,再次进行调试即可。

另外,请在“工具” ->“选项” ->“调试” ->“符号服务器”下启用符号服务器,并启用异常设置窗口,查看详细的异常信息,可能需要先解决异常或从中获取任何有用的信息。


1
如果你真的想避免这种情况,我建议你在“工具”->“选项”->“调试”下禁用“启用.NET框架源代码跟踪”等设置。尽管已经禁用了该设置,但问题仍然存在。 - Apostolis Bekiaris
@Apostolis Bekiaris,如果您有其他建议,请添加到此问题中。如果可能的话,您可以查看上面的答案。如果仍然没有帮助,您能否分享一个使用OneDrive的简单示例?这样我们就可以使用与您相同的示例在我们这边进行调试。 - Jack Zhai

3

我必须在项目属性窗口(参考截图)的调试选项卡下检查启用本机代码调试。之后,按下Ctrl + Shift + S保存属性窗口更改。

因此,在保存项目属性后,每当我们开始新的调试会话时,问题就会消失。

enter image description here


2

以上方法都不适用于我,因为我使用的是没有PDB文件的外部DLL。当我删除所有断点时,发现了这一点。

转到调试菜单> 窗口 > 异常设置(或按ctrl + alt + E),然后勾选公共语言运行时异常或点击恢复默认值(参见截屏):

enter image description here

所以当它抛出异常并且你看不到它时,它想要使用PDB文件来存储堆栈跟踪,但是找不到它。

1
尝试取消勾选调试托管服务。

This worked for me!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接