前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >rust-vim 整合基于vimspector的debug调试环境

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

作者头像
潇洒
发布2023-10-23 14:59:32
4170
发布2023-10-23 14:59:32
举报
文章被收录于专栏:石头岛石头岛

前言

前面配置好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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 流程
  • 安装vimspector插件
  • vimspector 配置
    • 1.添加 lldb-vscode.json
      • 2.添加 .vimspector 文件
      • 调试操作
      • 参考链接
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档