And*_*vov 139 c++ debugging vim gdb
问题是所有使用Vim开发C++应用程序的人.
在我的生命中有一段时间,可以被描述为"我讨厌Vim !!!"......"Vim很好!"
然而,我已经习惯了那些F5- F11在调试代码,监视窗口,调用堆栈和主代码时都是快捷方式 - 所有这些都是可见的,而无需键入任何GDB命令.
所以,这是一个问题:
您是否也使用Vim进行调试?或者为此目的切换到某些IDE?哪一个?
对于那些使用Vim来调试代码的人:是否有插件在编辑器中设置断点,突出显示我们当前正在调试的行,步骤中的自动导航,步入,退出?
请不要告诉我你使用GDB作为命令行,只看到一行被调试,等等.
Unc*_*eiv 70
与其他答案相比,至少有三个选项可以满足您的需求:clewn,pyclewn和vimgdb.
这三个项目都是相关的.vimgdb是针对Vim的补丁,需要重新编译Vim.clewn是一个独立程序,通过Netbeans套接字接口与Vim通信.这需要使用该+netbeans
选项构建Vim (在最近的Linux发行版中就是这种情况,因此它应该不是问题).
引用clewn的网站:
Clewn在vim编辑器中实现了完整的gdb支持:断点,监视变量,gdb命令完成,程序集窗口等.
我想你一定要试一试.
pyclewn网站的主页显示了三个项目之间的比较.
几个月前我试过pyclewn.设置起来有点困难,但看起来很好但很有希望.我刚做了一些测试,你可以设置书签等,这是你期望从图形调试器中获得的常用内容.我最终没有出于偶然原因使用它,但我很想再试一次.
tin*_*ino 18
2020 年更新:有一个使用调试适配器协议的新插件vimspector
配置(写入.vimspector.json
)
用调试符号编译 g++ cpp.cpp -ggdb -o cpp
按F4
开始调试
.vimspector.json
在我的主目录中(所以在任何子目录中工作){
"configurations": {
"Python - Launch": {
"adapter": "vscode-python",
"configuration": {
"name": "Python: Launch current file",
"type": "python",
"request": "launch",
"stopOnEntry": true,
"stopAtEntry": true,
"console": "externalTerminal",
"debugOptions": [],
"cwd": "${cwd}",
"program": "${file}"
}
},
"Perl - Launch": {
"adapter": "vscode-perl-debug",
"configuration": {
"name": "Perl: Launch current file",
"type": "perl",
"request": "launch",
"exec": "/usr/bin/env perl",
"execArgs": [],
"stopOnEntry": true,
"stopAtEntry": true,
"console": "externalTerminal",
"sessions": "single",
"debugOptions": [],
"cwd": "${cwd}",
"program": "${file}"
}
},
"C - Launch": {
"adapter": "vscode-cpptools",
"configuration": {
"name": "Cpp: Launch current file",
"type": "cppdbg",
"request": "launch",
"externalConsole": true,
"logging": {
"engineLogging": true
},
"stopOnEntry": true,
"stopAtEntry": true,
"debugOptions": [],
"MIMode": "gdb",
"cwd": "${cwd}",
"program": "${fileDirname}/${fileBasenameNoExtension}"
}
},
"Java - Launch": {
"adapter": "vscode-java",
"configuration": {
"name": "Java: Launch current file",
"request": "launch",
"mainClass": "com.vimspector.test.TestApplication",
"sourcePaths": [ "${workspaceRoot}/src/main/java" ],
"classPaths": [ "${workspaceRoot}/target/classes" ],
"args": "hello world!",
"stopOnEntry": true,
"console": "integratedTerminal"
}
}
} }
Run Code Online (Sandbox Code Playgroud)
Dan*_* S. 11
Vim在2018年5月发布的8.1版中正式添加了一个内置调试器。早在2017年8月,该功能在某些8.0版中也已存在。
以下vim命令加载插件并启动调试器。
:packadd termdebug
:Termdebug
Run Code Online (Sandbox Code Playgroud)
后一个命令将程序作为可选参数,或者可以gdb
使用该file
命令从窗口加载程序。
加载插件后,gdb
可以在相应的窗口中交互使用。例如,可以设置断点,可以单步执行代码,还可以检查变量。
可以发出Vim命令与进行交互gdb
。一些相关的命令包括:Step
,:Over
,:Finish
,:Continue
,:Stop
,:Break
,:Clear
,和:Evaluate
。
此外,编辑器窗口顶部还有可点击的按钮,可与进行交互gdb
。
编辑器窗口将更新以反映调试状态。断点用表示,>>
当前行突出显示。
内置的帮助页面包含完整的文档。
:help terminal-debug
Run Code Online (Sandbox Code Playgroud)
我最近写了一篇博客文章,其中包括一个示例会话。
https://www.dannyadam.com/blog/2019/05/debugging-in-vim/
GDB edit
命令
使用以下命令在当前行上打开编辑器:
$EDITOR +<current-line> <current-file>
Run Code Online (Sandbox Code Playgroud)
默认editor
是ex
,但vim
也理解+<current-line>
格式.
当你退出编辑器时,你会回来gdb
.
这允许您自由地浏览源代码,如果您有ctags
集成,则特别强大.
这是一个穷人内置的单向gdb到vim集成:主要缺少的是从Vim设置断点.
edit
和中心
edit
默认情况下,Vim不会在源代码中居中,所以我创建了一个Python脚本来执行它:如何在GDB的文本编辑器中打开当前行的当前文件?
断点命令到剪贴板助手
此vim命令复制类型的断点说明符:
b <file-path>:<line-number>
Run Code Online (Sandbox Code Playgroud)
到剪贴板:
command! Xg :let @+ = 'b ' . expand('%:p') . ':' . line('.')
Run Code Online (Sandbox Code Playgroud)
然后你可以将其粘贴到gdb
.
这是一个穷人对gdb集成的vim,可以轻松设置断点.
GDB仪表板
https://github.com/cyrus-and/gdb-dashboard
这与Vim无关,但它是一个轻量级的解决方案,实现了很多,可能适合其他Vimmers.
其他人提到了GDB TUI,但我发现它太破碎了,而且现在强大到可以忍受.
所以我转而使用基于Python API的解决方案,例如GDB Dashboard.
我在下面更详细地描述了used和reasonale:带代码的gdb拆分视图
以下是它为您提供的屏幕截图:
另请参阅:https://vi.stackexchange.com/questions/2046/how-can-i-integrate-gdb-with-vim
归档时间: |
|
查看次数: |
70755 次 |
最近记录: |