vs2022 如何让.net库文件参与程序调试【可以.net库文件的源代码中设置断点,单步跟踪】
由于.net core 是开源的。所以可以让.net库文件参与程序调试。具体vs2022配置如下
1、设置VS2022 加载程序数据文件(.pdb俗称符号文件)
1)选择工具>选项>调试>符号,并确保已选中“ Microsoft符号服务器(.NET框架相关的库)和NuGet.org符号服务器”选项。为符号高速缓存指定目录是避免再次下载相同符号,提高源码查看效率。
2)在“工具” >“选项” >“调试” >“常规”中禁用【启用“仅我的代码”】
3)在“工具” >“环境” >“文档” >勾选【在解决方案的管理器中显示杂项】点击完成,再次运行调试的时候,编译器就会从https://raw.githubusercontent.com/下载Dll库的源代码(仅限.net core)
2、Visual Studio 提供两种 加载模式:
- 自动加载所有模块的符号,除非排除:如标题所示,除非通过单击"指定排除的模块"将模块添加到排除列表中,否则 Visual Studio 将尝试为进程中的所有模块加载符号。如果您希望为进程中的几乎所有内容加载符号,或者由于内存或调试启动性能原因,您不希望加载少数非常大的符号,则通常需要此设置。
- 仅指定模块:默认情况下,此设置将加载磁盘上二进制文件旁边的符号,但不会尝试加载任何其他模块的符号,除非您通过单击"指定模块"将它们添加到包含列表中。例如,如果您想使用手动加载,但始终加载名称中带有"Microsoft"的任何内容的符号,则可以输入"*Microsoft*"
vs2022 默认是加载所有符号的,这大型项目中式很影响调试的。所以在大型项目中要设置成按需加载符号,如下操作:
符号未加载的一些常见原因包括:
- 符号路径未指向正确的位置
- 符号文件来自与进程中加载的模块版本不同的模块版本
- Visual Studio 要求符号文件来自与模块完全相同的内部版本。它无法加载来自不同版本的符号,即使源代码相同
- [仅限托管]"仅我的代码"设置阻止调试器加载符号文件
编程是个人爱好