.NET 反编译调试神器:dnSpy了解一下

如果客户环境出了问题,而又无法快速定位问题,可以借助dnSpy进行反编译调试跟踪。

可前往dnSpy官网下载或直接从我的分享链接下载(内置包含.NET Framework 4.7.1,若运行提示需要安装,可解压找到.NET Framework 4.7.1-x86-x64-AllOS-ENU.exe安装)。

具体操作步骤如下所示:

  1. 添加系统环境变量,COMPLUS_ZapDisable = 1
  2. 如果需要调试IIS进程,可进入C:\Windows\System32\inetsrv目录执行appcmd list wp 查看对应的应用程序池进程ID
  3. 打开dnspy,调试-->附加到进程-->选择相应的进程ID-->附加
  4. 调试-->窗口-->模块-->搜索要调试的程序集-->双击
  5. 在程序集资源管理器找到要调试的类打开,打断点即可
  6. 右键要修改的类文件-->编辑类/方法-->修改类-->编译
  7. 文件-->保存模块-->选择要保存的路径-->保存
  8. 将保存的重新编译的程序集替换到目标路径即可
  9. 执行iisreset(若为IIS应用)
配置环境变量
获取IIS应用程序池进程ID
附加到进程并打断点
修改代码,重新编译并保存模块

关于异常捕捉中断
调试过程中出现的异常,dnSpy默认不会自动中断的,需要自行设置异常中断条件。比如:要捕捉NullReferenceException,那么请打开异常设置窗口(调试->窗口->异常设置)进行设置,如下图所示:

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别...
    吃瓜群众呀阅读 12,041评论 3 42
  • Awesome DotNet,这又是一个 Awesome XXX 系列的资源整理,由 quozd 发起和维护。内容...
    小明yz阅读 3,738评论 0 47
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,198评论 4 61
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,135评论 1 32
  • 今天我们来深入探讨一下Java中的Calendar的工具类,总共会分成两部分由深到浅讲解。这篇就讲解Calenda...
    lvyunxing阅读 5,836评论 1 2