Pyclewn is a Vim front-end to the gdb and pdb debuggers.
The debugger output is redirected to a Vim window, the console. The debugger commands are mapped to Vim user-defined commands and completion is available on the Vim command line.
If your linux distribution provides a pyclewn package simply install it via the package manager. For example, Arch Linux provides pyclewn in AUR. This will result in a system-wide installation.
$ yaourt -S pyclewn
You may need to install a specific package required to compile python extensions. For example I've got to install it explicitly within my raspberry-pi raspbian distibution.
$ apt-get install python-dev python-pip
Install the pyclewn python package via "pip"
$ pip install pyclewn
This command install the clewn package and it's dependencies.
Install the Vim runtime files with a vimball. The vimball is part of the clewn package installed in the previous part
$ python -c "import clewn; clewn.get_vimball()"
Then source the vimball and install the Vim runtime files with
$ vim -S pyclewn-2.2.vmb
:quit to quit Vim after the vimball is installed.
Note: this will result in a user-only installation of Pyclewn. Eventually repeat the "source the vimball" step for each user.
Once installed the plugin is easily started from Vim command mode with the command
From now on you can feed commands to the underlying gdb running instance via the vim command mode and by using the
To terminate the gdb session:
Start pyclewn with:
$ python -m clewn [options] [debugger]
"debugger" defaults to "gdb".
By default pyclewn uses for program IO the
/dev/null file. If your debugged program requires user IO, first open a shell dedicated to the program IO and get the port name (e.g. by using the
Then, to prevent the shell from executing our input strings let it execute a tight dummy loop.
$ while true; do sleep 1000; done
Before you run you program with pyclewn, you must set the tty port used by gdb via the
:C tty /dev/pts/nn
You program IO is thus bound to the
First set the pyclewn_terminal Vim global variable to have pyclewn started in a terminal instead of a daemon, and to visualize the log traces at the "info" log level. The variable must be a string of comma separated arguments needed to start a terminal and a program running on this terminal. For example:
:let g:pyclewn_terminal = "xterm, -e"
Proudly self-hosted on a cheap Raspberry Pi