+----------------------------------+
| Vim |
+----------------------------------+
| VimDebug plugin |
| ($HOME/vim/plugin/VimDebug.vim) |
+----------------------------------+
|
^
|
tcp socket
port 6543
|
v
|
+----------------------------------+
| VimDebug daemon |
| (./bin/vdd) |
+----------------------------------+
| Perl libraries |
| (VimDebug::*) |
+----------------------------------+
READ WRITE
| |
^ v
| |
STDOUT STDIN
+----------------------------------+
| Forked debugger process. |
| One of: |
| perl -d |
| python -d |
| ruby -rdebug |
| gdb |
| jdb |
| ... |
+----------------------------------+
All debugger interfaces should inherit from VimDebug
So we have for example:
VimDebug::Perl
VimDebug::Ruby
...
These methods should implement callback functions like step(), _next(), etc.
The VimDebug daemon (vdd) calls these functions at the right time.
For example, when Vim issues a step command to vdd, vdd will call
$debugger->step(), where $debugger is for example an instance of
VimDebug::Perl.