DnSpy调试基础
目录
- 相关资源
- 项目介绍
- 安装
- 调试方法
- 方法1:**启动程序并进行调试 (Start Debugging / F5):**
- 方法2:调试运行中的程序——附加到进程 (Attach to Process):
相关资源
项目地址:
https://gitcode.com/gh_mirrors/dns/dnSpy
or dnSpy/dnSpy:.NET 调试器和程序集编辑器 — dnSpy/dnSpy: .NET debugger and assembly editor
官网:Dnspy - Powerful .NET Debugger & Assembly Editor
项目介绍
dnSpy is a popular and versatile tool primarily used for debugging and editing .NET assemblies. It’s a free and open-source software that provides developers with the ability to decompile and debug code, even when the source code is not available.
dnSpy 是一款流行且功能多样的工具,主要用于调试和编辑 .NET 程序集。它是一款免费的开源软件,即使在没有源代码的情况下,也能为开发人员提供反编译和调试代码的能力。
我最喜欢它的一点是,它还是比较轻量的,运行起来非常轻松。
安装
可以从官网下载或者仓库Release.
注意:在使用 DnSpy 时,务必根据应用程序的位数选择对应版本。若为 64 位应用程序,应选择 64位版本的 DnSpy;若是 32 位应用程序,则需选择 32位版本的 DnSpy。
调试方法
注意:在使用 DnSpy 时,务必根据应用程序的位数选择对应版本。若为 64 位应用程序,应选择 64bit 版本的 DnSpy;若是 32 位应用程序,则需选择 32bit 版本的 DnSpy。
方法1:启动程序并进行调试 (Start Debugging / F5):
-
操作步骤
-
添加需要进行调试的程序集
-
方式1:直接拖拽到DnSpy中
-
方式2:【文件】→【打开文件夹】
-
-
在 dnSpy 中,点击“调试”→“开始调试(F5)”
-
弹出以下弹窗
- 调试引擎:根据项目使用,选择.NET或者.NET Framework
- 可执行程序:选择可执行程序
例如:MyApp.exe - 参数:填写运行程序需要的参数
根据具体应用程序而定 - 工作目录:会根据可执行程序自动带出
- 使用Host可执行文件
我这里因为exe是可以直接调用程序入口的可执行文件,所以不需要勾选 - 宿主:不需要填写
- 宿主参数:不需要填写
- 中断于:默认或根据需要选择
-
点击【确定】
-
结果:可以看到已经在入口点停住了,然后就可以在想调试的位置增加断点结合调用堆栈、局部变量等进行调试。
可以看到同时在程序集管理器中加载了相关的程序集。
-
-
用途: 这是最常用的方式,用于从头开始启动并调试一个应用程序。就像在 Visual Studio 中调试自己的项目一样。
-
特点: 可以传递命令行参数,设置工作目录和环境变量。调试器会从入口点开始执行。
方法2:调试运行中的程序——附加到进程 (Attach to Process):
-
操作步骤
-
运行要调试的程序
-
点击【调试】-> 【附加到进程…】→ 选择正在运行的程序的进程 →附加
可以看到此时DnSpy已经显示运行中状态了,这时所运行的程序就附加到dll文件了,在需要的位置打上断点就可以对运行中的程序进行调试了。
-
-
用途: 用于调试已经运行的 .NET 应用程序。这对于调试服务、ASP.NET应用、长时间运行的进程或者无法轻易从 dnSpy 启动的程序(如某些注入的场景)非常有用。
-
特点: 可以调试任何 .NET 进程(需要足够权限)。附加后,程序会继续运行,你可以设置断点、暂停执行等进行调试。注意: 附加到某些系统进程或高权限进程可能需要管理员权限。