前言
在前面三篇文章中应该已经把 .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
源码。