性能优化 | 记一次 .NET 程序的性能优化实战(4)—— .NET 源码查看及使用 vs 调试

前言

在前面三篇文章中应该已经把 .NET 中正则表达式相关的问题”格尽”了。感兴趣的小伙伴儿可以参考 part1,part2 和 part3。

由于篇幅原因,在前面的文章中并没有介绍如何下载 .NET 源码,如何调试 .NET 源码。本文会简单介绍如何下载 .NET 源码,如何在线浏览 .NET 源码,如何使用 vs 调试 .NET 源码。

下载 .NET 源码

微软提供了一个非常棒的可以在线浏览 .NET 源码的网站,不仅可以在线浏览(体验不错),还可以下载到本地。点击右上角的 Download 按钮即可列出可供下载的各个版本的 .NET 源码。如下图:

拿到源码后可以直接打开工程文件(Source\ndp.sln)浏览代码,相当方便。虽然有源码可以参考,对理解 Regex 的逻辑非常有帮助,但是如果能运行起来,动态调试的话,理解起来肯定会更轻松。

说明: 虽然有工程文件,能浏览代码,但是不能成功编译。

调试工具选择

根据之前的调试经验,调试 .NET 程序有几种选择:

  • dnSpy

    真算的上是 .NET 逆向神器。可以在没有符号文件的情况下进行源码级的调试,绿色免安装,使用习惯与 vs 基本一致。Github 对应的地址在这里。

  • visual studio

    宇宙第一 IDE,调试 .NET 程序是非常给力的。虽然在调试没有符号文件的模块时不能像 dnSpy 那样进行源码级的调试,但是也可以使用 .net reflactor 等插件帮助解决。

  • windbg

    虽然 windbg 也可以在 sos.dll 等扩展的帮助下很好的调试 .NET 程序。但是我更倾向于使用 windbg 分析疑难杂症,而不是做基本的调试任务。

本文只介绍使用 vs 调试 .NET 源码的方法。

vs 调试设置

  1. 设置调试符号路径

    经常调试的小伙伴儿肯定知道 pdb 对调试的重要性。我觉得,在 windows 下做调试,第一件应该做的事就是设置好调试符号路径。所以我的电脑上总会设置环境变量 _NT_SYMBOL_PATH。对应的值如下:

    _NT_SYMBOL_PATH=SRV*d:\My\mssyms*http://msdl.microsoft.com/download/symbols*

    表示会从 d:\My\mssyms\ 这查找调试符号,如果找不到会到微软官方符号服务器上下载,并缓存到 d:\My\mssyms\ 下。

    如果没设置过此环境变量也没关系,可以到对应的调试器中进行设置,在 vs 中设置位置如下图所示:

    set-symbol-path-in-vs

  1. 设置获取源码

    调试 .NET 源码需要进行设置,整体设置也比较简单。点击 调试(D) -> 选项和设置(G)... 弹出选项界面,选择 调试 -> 常规,然后按下图设置即可。

    说明: 如果 vs 不能自动下载对应的源码文件,可以手动选择下载好的源码文件,即可正常设置断点。-‘’

调试 .NET 源码就这么简单地设置好了。

总结

参考资料

.NET源码

https://docs.microsoft.com/en-us/archive/blogs/sburke/configuring-visual-studio-to-debug-net-framework-source-code

BianChengNan wechat
扫描左侧二维码关注公众号,扫描右侧二维码加我个人微信:)
0%