rust-vim 整合基于vimspector的debug调试环境

2023-10-23 14:59:32 浏览数 (1)

前言

前面配置好rust开发环境后,还需要一个调试功能就能用了。 不清楚的可以回看我的rust-vim安装记录 调试器,找了几款,最后还是觉得还是使用vimspector这个用的习惯,捣鼓两个整合了一下基于vimspector的调试环境,快捷键不用重新再配置。

这几天换了mac M2,把功能都迁移过来,完可用,这图就是M2上载图的。 另外补全相关的配置,需要coc的一些额外配置。 vim CocConfig参数设置说明

流程

  • 安装vimspector插件: puremourning/vimspector
  • 添加配置文件:
    • lldb-vscode.json
    • .vimspector.json

安装vimspector插件

添加插件,然后执行PlugInstall,路径:

~/.config/nvim/init.vim

--enable-rust 表示要启用的语言支持,可以从官网查看支持的语言。

代码语言:javascript复制
Plug 'puremourning/vimspector', {'do': './install_gadget.py --enable-rust'}

在vim中执行:

代码语言:javascript复制
:PlugInstall

添加配置到init.vim

~/.config/nvim/init.vim

代码语言:javascript复制
"==============================================================================
" rust
"==============================================================================
nnoremap <leader>rr :CocCommand rust-analyzer.run<CR>

"==============================================================================
" vimspector 调式配置
"==============================================================================
# 指定快捷键影射为 HUMAN 模式,还有 VISUAL_STUDIO 模式
let g:vimspector_enable_mappings = 'HUMAN'
nmap <leader>dd :call vimspector#Launch()<CR>
nmap <leader>dx :VimspectorReset<CR>
nmap <leader>de :VimspectorEval
nmap <leader>dw :VimspectorWatch
nmap <leader>do :VimspectorShowOutput
let g:vimspector_install_gadgets = [ 'debugpy', 'vscode-go', 'CodeLLDB' ]

其它建议的配置项:

代码语言:javascript复制
" mnemonic 'di' = 'debug inspect' (pick your own, if you prefer!)

" for normal mode - the word under the cursor
nmap <Leader>di <Plug>VimspectorBalloonEval
" for visual mode, the visually selected text
xmap <Leader>di <Plug>VimspectorBalloonEval

您可能还希望添加用于向上/向下导航堆栈、切换断点窗口和显示反汇编的映射,例如:

代码语言:javascript复制
nmap <LocalLeader><F11> <Plug>VimspectorUpFrame
nmap <LocalLeader><F12> <Plug>VimspectorDownFrame
nmap <LocalLeader>B     <Plug>VimspectorBreakpoints
" 反汇编的映射
nmap <LocalLeader>D     <Plug>VimspectorDisassemble

vimspector 配置

需要添加两个配置文件:

  1. lldb-vscode.json
  2. .vimspector.json

1.添加 lldb-vscode.json

lldb-vscode.json文件所以在这个路径,如果没有.gadgets.d需要创建一个,我的 路径: ~/.vim/plugged/vimspector/gadgets/macos/.gadgets.d/lldb-vscode.json 这里说明一个,这个路径是.vim,我用的是nvim没错,只是我把插件路径都统一到了.vim这个目录下了。 最开还没有使用nvim,用的是vim

代码语言:javascript复制
{
  "adapters": {
    "lldb-vscode": {
      "variables": {
        "LLVM": {
          "shell": "brew --prefix llvm"
        }
      },
      "attach": {
        "pidProperty": "pid",
        "pidSelect": "none"
      },
      "command": [
        "${LLVM}/bin/lldb-vscode"
      ],
      "env": {
        "LLDB_LAUNCH_FLAG_LAUNCH_IN_TTY": "YES"
      },
      "name": "lldb"
    }
  }
}

2.添加 .vimspector 文件

这个文件添加到子项目下,比如下面是我的项目结构, 添加到 vector_test 这个项目下,偿试在rust-learning上添加,子项无法启动vimspector

代码语言:javascript复制
rust-learning/
--src/
--target/
--string_test/
--struct_test/
--vector_test/
    --.vimspector

调试操作

对应HUMAN模式的快捷键:

按键

映射

功能

F5

<Plug>VimspectorContinue

开始调试、下一个断点

F3

<Plug>VimspectorStop

停止调试

F4

<Plug>VimspectorRestart

使用相同的配置,重启debug

F6

<Plug>VimspectorPause

暂停调试对象

F9

<Plug>VimspectorToggleBreakpoint

添加、取消断点

<leader>F9

<Plug>VimspectorToggleConditionalBreakpoint

添加条件断点或日志点

F8

<Plug>VimspectorAddFunctionBreakpoint

为光标下的表达式添加函数断点

<leader>F8

<Plug>VimspectorRunToCursor

运行到光标处

F10

<Plug>VimspectorStepOver

单步跳过

F11

<Plug>VimspectorStepInto

单步进入

F12

<Plug>VimspectorStepOut

单步跳出

如果跑完一圈断点要重开,就按F4,其它的跟常用IDE差不多。 还有就是各个窗口,也和IDE差不多的功能,线程栈可以跳对应的线程和执行的代码位置。 变量监视窗口支持表达式,到窗口按i,就可以输入表达式如:i==50

差不多就能用了,有问题留言。

参考链接

https://github.com/puremourning/vimspector

0 人点赞