前言
在前面三篇文章中应该已经把 .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 调试设置
设置调试符号路径
经常调试的小伙伴儿肯定知道
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中设置位置如下图所示:
设置获取源码
调试
.NET源码需要进行设置,整体设置也比较简单。点击调试(D) -> 选项和设置(G)...弹出选项界面,选择调试 -> 常规,然后按下图设置即可。
说明: 如果
vs不能自动下载对应的源码文件,可以手动选择下载好的源码文件,即可正常设置断点。-‘’
调试 .NET 源码就这么简单地设置好了。
总结
- 微软提供了一个非常棒的可以在线浏览 .NET 源码的网站。
- 可以使用
dnSpy或者vs(需要设置)调试.NET源码。