ITADN
mfussenegger/nvim-dap
mfussenegger/nvim-dap · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

DAP (Debug Adapter Protocol)

nvim-dapNeovim 的 Debug Adapter Protocol 客户端实现。 nvim-dap 允许你:

  • 启动应用程序进行调试
  • 附加到正在运行的应用程序并对其进行调试
  • 设置断点并单步执行代码
  • 检查应用程序的状态

demo

安装

LuaRocks

  • 像安装其他 Neovim 插件一样安装 nvim-dap:
    • git clone https://codeberg.org/mfussenegger/nvim-dap.git ~/.config/nvim/pack/plugins/start/nvim-dap
    • 或者使用 vim-plugPlug 'mfussenegger/nvim-dap'
    • 或者使用 packer.nvimuse 'mfussenegger/nvim-dap'
  • 使用 :helptags ALL:helptags <PATH-TO-PLUGIN/doc/> 生成 nvim-dap 的文档

支持的 Neovim 版本:

  • 最新的 nightly
  • 0.12.x(推荐)
  • 0.11.7

您需要为每种语言安装并配置调试适配器。请参阅

用法

典型的调试流程包括:

  • 通过 :DapToggleBreakpoint:lua require'dap'.toggle_breakpoint() 设置断点。
  • 通过 :DapNew:DapContinue:lua require'dap'.continue() 启动调试会话并恢复执行。
  • 通过 :DapStepOver:DapStepInto 或对应的 函数 :lua require'dap'.step_over():lua require'dap'.step_into() 单步执行代码。
  • 检查状态:
    • 通过内置的 REPL::lua require'dap'.repl.open()
      • 尝试输入一个表达式后按 ENTER 来求值。
      • 尝试诸如 .help.frames.threads 等命令。
      • 具有结构的变量可以通过在对应行按 ENTER 来展开和折叠。
    • 通过 widget UI(:help dap-widgets)。通常您会在需要时临时检查值、 线程和堆栈跟踪,而不是始终显示这些信息,但您也可以创建侧边栏用于永久显示
    • 通过 UI 扩展:

请参阅 :help dap.txt:help dap-mapping:help dap-api

提示:

方向键是用于逐步执行代码的键位映射的良好候选项,因为它们的 方向与你将要步进的方向相似。

  • Down: 单步跳过
  • Right: 单步进入
  • Left: 单步跳出
  • Up: 重启帧

你可以在调试会话期间使用事件监听器临时设置键位映射。 参见 :help dap-listeners

支持的语言

理论上,所有存在调试适配器的语言都应得到 支持。

Wiki 由社区维护。如果你有一个尚未列出的 适配器可以正常工作,请扩展 Wiki。

一些调试适配器具有 语言特定 扩展。 建议使用它们而不是手动配置,因为它们通常 维护得更好。

如果 Wiki 中关于某个调试适配器的说明不起作用,请考虑 调试适配器可能自说明编写以来已发生了更改。 你可能需要阅读调试适配器的发布说明,或尝试使用 旧版本。如果你发现过时的示例,请更新 Wiki。

目标

  • 在 Neovim 中拥有一个基本的调试器。

  • 可扩展性,并兼作 DAP 客户端库。这允许其他插件 扩展调试体验。无论是通过改进 UI,还是通过 使调试应用程序的某些部分变得更加容易。

    所有已知的扩展都列在 Wiki 中。Wiki 由社区 维护。如果你构建了一个新扩展,或者发现了一个 未列出的扩展,请添加它。

非目标

  • 调试适配器的安装不在范围内。重新发明一个包管理器不是编辑器插件的职责。请使用你的系统包 管理器。使用 Nix。使用 Ansible。

  • nvim-dapconfig

  • Vim 支持。这不会发生。请改用 vimspector

替代方案

贡献

欢迎贡献:

  • 提供关于可用性的具体反馈。
  • 对问题进行分类。人们遇到的许多问题都是特定于调试适配器的。
  • 改进上游调试适配器的文档,使其更具编辑器无关性。
  • 改进 Wiki。但请避免将其变成本应放在上游的全面调试适配器文档。
  • 编写扩展。

在进行直接的代码贡献之前,请创建一个讨论或问题,以澄清该更改是否在 nvim-dap 核心的范围内。

请保持拉取请求的专注,不要同时更改多个内容。

功能

  • 启动调试适配器
  • 附加到调试适配器
  • 切换断点
  • 带条件的断点
  • 日志点
  • 设置异常断点
  • 单步跳过、单步进入、单步跳出
  • 单步后退、反向继续
  • 跳转
  • 重启
  • 停止
  • 暂停
  • 求值表达式
  • REPL(包括显示线程、帧和作用域的命令)