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

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

前言

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

由于篇幅原因,在前面的文章中并没有介绍如何下载 .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

  2. 设置获取源码

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

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

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

总结

参考资料

.NET源码

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

posted @ 2022-07-25 18:55  BCN  阅读(515)  评论(0编辑  收藏  举报