nvim 调试环境
好的调试环境事半功倍!利用 nvim-dap 打造一个 nvim 的调试环境。
调试环境的选择
命令行调试在交互场景下没办法发挥优势出来,特别是断点设置和调试程序的启停。由于编辑器已切回 用 nvim,故配一个好用的调试环境很重要。目前存在 2 个选择 vimspector 或 nvim-dap,都没用过, 对比了一番,决定还是用 nvim-dap 吧。主要出发点就是它单一,多折腾一番好。摘录总体结构如下:
1 | DAP-Client ----- Debug Adapter ------- Debugger ------ Debugee |
安装 nvim-dap
在参考文章中一上来就几个插件一起,看的有点蒙。其实这些并不是必要的,而是锦上添花的,一起上 有点摸不着头脑,还是先搞完单单一个 nvim-dap 的情况。
按照官方介绍,用 vim-plug 安装完后,需要根据目标调试语言进行配置后才能用。第一个还是用比较 熟悉的 C 语言来配置。由于目前 gdb 不在苹果 M4 芯片支持,只能选择用调试器 lldb。结果还是出 问题了,lldb 貌似不支持 dap,要用 lldb-vscode(现名 lldb-dap, 更接地气了)。
配置文件是需要新建一个的,在编辑器启动时能加载就可以了。故在init.vim中添加
require("mydap"), 并在 $XDG_CONFIG_HOME/nvim/lua 目录下创建一个 mydap.lua 文件, 内容
如下(现在只是想尽快看看效果,至于如何配好后面再处理吧):
1 | local dap = require("dap") |
保存好配置后,打开c文件,就可以用<leader>dapb来设置断点,通过<f5>来启动调试软件。
REPL
nvim-dap默认不弹出调试窗口出来。需在启动脚本里加入如下事件响应:
1 | -- Set event |
这样一启动调试,就可以新建一个命令交互的Buffer。就可以达到跟终端调试差不多的效果。但用
ctrl+c不能暂停,可以用API dap.pause()
记录一个问题
报错如下:
1 | Debug adapter didn't respond. Either the adapter is slow (then wait and ignore this) or |
通过stdpath("cache") 找到log所在的路径,发现如下错误:
1 | [ ERROR ] 2024-07-28T22:43:52Z+0800 ] ...t/.local/share/nvim/plugged/nvim-dap/lua/dap/session.lua:1466 ] "stderr" { |
得知Mac xcode一起安装的lldb不支持dap, 需要安装lldb-dap.
后记
当前配置
1 | local dap = require("dap") |