Gdb, LLDB, pdb/pdb++ and BASHDB integration with NeoVim.
Taken from the neovim: neovim_gdb.vim
It is instantly usable: type <leader>dd
, edit GDB launching command, hit <cr>
.
Or type <leader>dl
to do the same with LLDB backend.
Or type <leader>dp
to start debugging a python program.
Or type <leader>db
to start debugging a BASH script.
Check the prerequisites in the script test/prerequisites.sh.
If you use vim-plug, add the following line to your vimrc file:
Plug 'sakhnik/nvim-gdb', { 'do': ':!./install.sh' }
You can use any other plugin manager too:
To disable the plugin
let g:loaded_nvimgdb = 1
The behaviour of the plugin can be tuned by defining specific variables. For instance, you could overload some command keymaps:
" We're going to define single-letter keymaps, so don't try to define them
" in the terminal window. The debugger CLI should continue accepting text commands.
function! NvimGdbNoTKeymaps()
tnoremap <silent> <buffer> <esc> <c-\><c-n>
endfunction
let g:nvimgdb_config_override = {
\ 'key_next': 'n',
\ 'key_step': 's',
\ 'key_finish': 'f',
\ 'key_continue': 'c',
\ 'key_until': 'u',
\ 'key_breakpoint': 'b',
\ 'set_tkeymaps': "NvimGdbNoTKeymaps",
\ }
Likewise, you could define your own hooks to be called when the source window
is entered and left. Please refer to the online NeoVim help: :help nvimgdb
.
See :help nvimgdb
for the complete online documentation. Most notable commands:
Mapping | Command | Description |
---|---|---|
<Leader>dd | :GdbStart gdb -q ./a.out |
Start debugging session, allows editing the launching command |
<Leader>dl | :GdbStartLLDB lldb ./a.out |
Start debugging session, allows editing the launching command |
<Leader>dp | :GdbStartPDB python -m pdb main.py |
Start Python debugging session, allows editing the launching command |
<Leader>db | :GdbStartBashDB bashdb main.sh |
Start BASH debugging session, allows editing the launching command |
<F8> | :GdbBreakpointToggle |
Toggle breakpoint in the coursor line |
<F4> | :GdbUntil |
Continue execution until a given line (until in gdb) |
<F5> | :GdbContinue |
Continue execution (continue in gdb) |
<F10> | :GdbNext |
Step over the next statement (next in gdb) |
<F11> | :GdbStep |
Step into the next statement (step in gdb) |
<F12> | :GdbFinish |
Step out the current frame (finish in gdb) |
<c-p> | :GdbFrameUp |
Navigate one frame up (up in gdb) |
<c-n> | :GdbFrameDown |
Navigate one frame down (down in gdb) |
You can create a watch window evaluating a backend command on every step.
Try :GdbCreateWatch info locals
in GDB, for istance.
You can open the list of breakpoints or backtrace locations into the location list.
Try :GdbLopenBacktrace
or :GdbLopenBreakpoints
.
The goal is to have a thin wrapper around GDB, LLDB, pdb/pdb++ and BASHDB, just like the official TUI. NeoVim will enhance debugging with syntax highlighting and source code navigation.
The project uses GitHub actions to run the test suite on every commit automatically. The plugin, proxy and screen logs can be downloaded as the artifacts to be analyzed locally.
To ease reproduction of an issue, set the environment variable CI
, and
launch NeoVim with the auxiliary script test/nvim
. The screen cast will
be written to the log file spy_ui.log
. Alternatively, consider recording
the terminal script with the ubiquitous command script
.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。