第一次异常 - System.pdb 未加载

问题描述 投票:0回答:4

我使用 VS2017,当我按 F5 时得到以下信息

它只发生在某些项目中,即使我在 VS 选项下禁用了符号支持。尽管在过去,对于相同的项目,即使启用了 Symbol 支持,它也不会抛出异常。

所以,因为我假设这一定是某种特定于缓存的 VS 设置项目,所以我删除了 bin、obj、.vs、SymbolSource 文件夹,但它们是一样的。

如果我启用“仅我的代码”,它不会抛出,但这不是我想要的,因为我无法调试已经有符号的程序集。

据我所知,即使启用了符号支持,如果没有在 VS 选项中声明相关的符号服务器,它也不应该抛出。

此行为不仅特定于 System.dll,而且即使我附加到没有符号的外部进程也会发生,这意味着再次使用“仅加载指定模块 VS”选项进行过滤不是我想要的。

那么,有没有人知道如何避免此类烦人的异常,同时允许对我配置的其他程序集使用符号支持。

c# visual-studio-2017 visual-studio-debugging
4个回答
11
投票

这意味着你想进入 .net 框架源代码:

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

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

其实我们之前也向VS 2017的产品组反馈过这个问题:

进入 .NET 源代码仍然不起作用

如果你真的想避免它,我建议你在 TOOLS->Options->Debugging 下禁用像“Enable .NET framework source stepping”这样的设置。

要调试 .NET Framework 源代码,我们需要:

只禁用我的代码

禁用跨属性和运算符

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

启用 .NET 框架源步进

启用源服务器支持

所以只要使用与上述选项相反的设置,再次调试即可。

另外,请在TOOLS->Options->Debugging->Symbols Server下启用symbols server,并启用异常设置窗口,查看详细的异常消息,也许你必须先解决Exception或从中获取任何有用的信息.


2
投票

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

转到调试菜单 > Windows > 异常设置(或按 ctrl + alt + E

现在检查Common Language Runtime Exceptions或点击Restore default(参考截图):

所以当它抛出异常而你没有看到它时,它想使用 PDB 文件来存储堆栈跟踪但没有找到它。


2
投票

我必须在项目属性窗口的Debug选项卡下检查Enable native code debugging(参考截图)。之后,按 Ctrl + Shift + S 保存属性窗口更改。

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


1
投票

尝试取消选中调试托管服务。

This worked for me!

© www.soinside.com 2019 - 2024. All rights reserved.