当前位置: 首页 > backend >正文

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. 添加需要进行调试的程序集

      • 方式1:直接拖拽到DnSpy中

        在这里插入图片描述

      • 方式2:【文件】→【打开文件夹】

      在这里插入图片描述

    2. 在 dnSpy 中,点击“调试”→“开始调试(F5)”
      在这里插入图片描述

    3. 弹出以下弹窗
      在这里插入图片描述

      1. 调试引擎:根据项目使用,选择.NET或者.NET Framework
      2. 可执行程序:选择可执行程序
        例如:MyApp.exe
      3. 参数:填写运行程序需要的参数
        根据具体应用程序而定
      4. 工作目录:会根据可执行程序自动带出
      5. 使用Host可执行文件
        我这里因为exe是可以直接调用程序入口的可执行文件,所以不需要勾选
      6. 宿主:不需要填写
      7. 宿主参数:不需要填写
      8. 中断于:默认或根据需要选择
    4. 点击【确定】

    5. 结果:可以看到已经在入口点停住了,然后就可以在想调试的位置增加断点结合调用堆栈、局部变量等进行调试。
      可以看到同时在程序集管理器中加载了相关的程序集。

    在这里插入图片描述

  • 用途: 这是最常用的方式,用于从头开始启动并调试一个应用程序。就像在 Visual Studio 中调试自己的项目一样。

  • 特点: 可以传递命令行参数,设置工作目录和环境变量。调试器会从入口点开始执行。

方法2:调试运行中的程序——附加到进程 (Attach to Process):

  • 操作步骤

    1. 运行要调试的程序

    2. 点击【调试】-> 【附加到进程…】→ 选择正在运行的程序的进程 →附加

      可以看到此时DnSpy已经显示运行中状态了,这时所运行的程序就附加到dll文件了,在需要的位置打上断点就可以对运行中的程序进行调试了。
      在这里插入图片描述

  • 用途: 用于调试已经运行的 .NET 应用程序。这对于调试服务、ASP.NET应用、长时间运行的进程或者无法轻易从 dnSpy 启动的程序(如某些注入的场景)非常有用。

  • 特点: 可以调试任何 .NET 进程(需要足够权限)。附加后,程序会继续运行,你可以设置断点、暂停执行等进行调试。注意: 附加到某些系统进程或高权限进程可能需要管理员权限。

http://www.xdnf.cn/news/13413.html

相关文章:

  • gRPC、WebSocket 与 HTTP 的核心区别对比
  • 将两个变量a,b的值进行交换,不使用任何中间变量
  • Cursor 工具项目构建指南:让 AI 审查 AI 生产的内容,确保生产的内容质量和提前发现问题
  • Vim 翻页与滚动命令总览
  • 新能源知识库(35)AutoML在用电负荷预测中如何应用?
  • 【杂谈】-递归进化:人工智能的自我改进与监管挑战
  • Linux基础指令大全
  • SpringCloud微服务入门
  • Day50 Python打卡训练营
  • Vim 修改(change)命令完整学习笔记
  • [原创]X86C++反汇编02.算术指令
  • 闪回还能导致OGG同步失败
  • 生成xcframework
  • 一个获取极简风格动画素材的网站
  • Day11_刷题niuke20250610
  • CppCon 2015 学习:C++ Requests
  • Vim 插件管理:MiniBufExplorer 使用指南
  • 区块链Web3项目的开发
  • Dify 知识库深度剖析:从构建到高效应用
  • 【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
  • kotlin kmp 副作用函数 effect
  • 使用Ajax从前端向后端发起请求
  • Prometheus基础使用指南
  • 鹰盾加密虚拟机保护技术的深度解析:从指令级虚拟化到动态对抗系统
  • (LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
  • Windows cmd中文乱码解决方法(Windows控制台中文乱码、CMD乱码、控制台乱码、Command Prompt命令提示符cmd.exe乱码)
  • JxBrowser 7.43.2 版本发布啦!
  • 预训练模型 CBAM注意力
  • 【docker n8n】windows环境如何挂载
  • 【计算机组成原理 第5版】白、戴编著 第四章 指令系统 课后题总结