前言
前面配置好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
表示要启用的语言支持,可以从官网查看支持的语言。
Plug 'puremourning/vimspector', {'do': './install_gadget.py --enable-rust'}
在vim中执行:
代码语言:javascript复制:PlugInstall
添加配置到init.vim
中
代码语言:javascript复制~/.config/nvim/init.vim
"==============================================================================
" 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 配置
需要添加两个配置文件:
lldb-vscode.json
.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
。
{
"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
。
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