记一次 .NET 程序的性能优化实战(4)—— .NET 源码查看及使用 vs 调试
记一次 .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 调试设置
-
设置调试符号路径
经常调试的小伙伴儿肯定知道
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
源码。