Create your Gitee Account
Explore and code with more than 6 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Without author's permission, this code is only for learning and cannot be used for other purposes.
Clone or download
Notice: Creating folder will generate an empty file .keep, because not support in Git

Test Codacy Badge

GDB for neovim

Gdb, LLDB, pdb/pdb++ and BASHDB integration with NeoVim.

Table of contents


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/

If you use vim-plug, add the following line to your vimrc file:

Plug 'sakhnik/nvim-gdb', { 'do': ':!./' }

NOTE: Make sure to run :UpdateRemotePlugins and restart the editor before using the plugin.

You can use any other plugin manager too:

  • vundle
  • neobundle
  • pathogen


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>

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 Start Python debugging session, allows editing the launching command
<Leader>db :GdbStartBashDB bashdb 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.



nvim-gdb + llvm

clone + deploy + test

Comments ( 0 )

Sign in for post a comment


No description spread retract


No release




load more
can not load any more