vimspector安装
vim配置文件加入一下内容
Plug 'puremourning/vimspector'
let g:vimspector_enable_mappings = 'HUMAN'
:PlugInstall
安装插件即可。
上面的HUMAN是插件配置的一套快捷命令。具体如下
Key | Function | API |
---|---|---|
F5 |
When debugging, continue. Otherwise start debugging. | vimspector#Continue() |
F3 |
Stop debugging. | vimspector#Stop() |
F4 |
Restart debugging with the same configuration. | vimspector#Restart() |
F6 |
Pause debugee. | vimspector#Pause() |
F9 |
Toggle line breakpoint on the current line. | vimspector#ToggleBreakpoint() |
<leader>F9 |
Toggle conditional line breakpoint on the current line. | vimspector#ToggleBreakpoint( { trigger expr, hit count expr } ) |
F8 |
Add a function breakpoint for the expression under cursor | vimspector#AddFunctionBreakpoint('<cexpr>') |
F10 |
Step Over | vimspector#StepOver() |
F11 |
Step Into | vimspector#StepInto() |
F12 |
Step out of current function scope | vimspector#StepOut() |
vimspector配置
Language | Status | Switch | Adapter | Dependencies |
---|---|---|---|---|
C, C++, etc. | Tested |
--all or --enable-c
|
vscode-cpptools | mono-core |
Python | Tested |
--all or --enable-python
|
debugpy | Python 2.7 or Python 3 |
Go | Tested | --enable-go |
vscode-go | Go, [Delve][] |
TCL | Supported |
--all or --enable-tcl
|
tclpro | TCL 8.5 |
Bourne Shell | Supported |
--all or --enable-bash
|
vscode-bash-debug | Bash v?? |
Node.js | Supported | --force-enable-node |
vscode-node-debug2 | 6<Node<12, Npm |
Javascript | Supported | --force-enable-chrome |
debugger-for-chrome | Chrome |
Java | Supported | --force-enable-java |
vscode-java-debug | Compatible LSP plugin (see later) |
C# (dotnet core) | Experimental | --force-enable-csharp |
netcoredbg | DotNet core |
C# (mono) | Experimental | --force-enable-csharp |
vscode-mono-debug | Mono |
Python.legacy | Legacy | --force-enable-python.legacy |
vscode-python | Node 10, Python 2.7 or Python3 |
在vimspector目录运行 以上按照你本所需调试语言的命令即可。这里我只需调试C++代码。在我本地~/.vim/plugged/vimspector/
下执行
./install.py --enable-c
这里会去下载一个cpptools-osx.vsix
文件 可以挂vpn运行安装。或者下好放到对应的文件加即可。
在~/.vim/plugged/vimspector/gadgets/macos
下添加.gadgets.json
文件
{
"adapters": {
"vscode-cpptools": {
"attach": {
"pidProperty": "processId",
"pidSelect": "ask"
},
"command": [
"${gadgetDir}/vscode-cpptools/debugAdapters/OpenDebugAD7"
],
"name": "cppdbg"
}
}
}
新建文件夹~/.vim/plugged/vimspector/gadgets/macos/.gadgets.d
添加lldb-vscode.json
文件
{
"adapters": {
"lldb-vscode": {
"variables": {
"LLVM": {
"shell": "brew --prefix llvm"
}
},
"attach": {
"pidProperty": "pid",
"pidSelect": "ask"
},
"command": [
"${LLVM}/bin/lldb-vscode"
],
"env": {
"LLDB_LAUNCH_FLAG_LAUNCH_IN_TTY":
"YES"
},
"name":"lldb"
}
}
}
项目配置
在项目下添加.vimspector.json
{
"configurations": {
"cpp:launch": {
"adapter": "vscode-cpptools",
"configuration": {
"name": "cpp",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/a.out",
"args": ["*${ProgramArgs}"],
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": false,
"stopAtEntry": true,
"MIMode": "lldb",
"logging": {
"engineLogging": true
}
}
}
}
}
其中program
是本地的项目编译后的文件。这的mac下需要使用clang进行编译,使用gcc无法调试。
编辑a.cpp
文件
#include<stdio.h>
int main(){
int a = 1;
int b = 2;
int c = a + b;
printf("%d", c);
return 0;
}
vim打开a.cpp
文件 F9
添加断点 F5
进入调试。结果如下图所示
image
F11
逐步调试即可。