This is a port and cleanup of my bash debugger bashdb.
The command syntax generally follows that of the GNU debugger gdb.
However this debugger depends on a number of bug fixes and of debugging support features that are neither part of the POSIX 1003.1 standard and are not in current "stable" zsh releases. In particular, the "functrace" function should always report filenames and absolute line numbers. Also both "functrace" and "funcstack" should include source'd files in their arrays.
To get the code, install git and run in a zsh shell:
git-clone git://github.com/rocky/zshdb.git cd zshdb ./autogen.sh # Add configure options. See ./configure --help
If you've got a suitable zsh installed, then
make && make test
To try on a real program such as perhaps /etc/zsh/zshrc:
./zshdb /etc/zsh/zshrc # substitute .../zshrc with your favorite zsh script
To modify source code to call the debugger inside the program:
source path-to-zshdb/zshdb/dbg-trace.sh # work, work, work. _Dbg_debugger # start debugging here
Above, the directory path-to_zshdb should be replaced with the
dbg-trace.sh is located in. This can also be from the
source code directory zshdb or from the directory
installed directory. The "source" command needs to be done only once
somewhere in the code prior to using
If you are happy and
make test above worked, install via:
sudo make install
and uninstall with:
sudo make uninstall # ;-)
See INSTALL for generic configure installation instructions.
What's missing falls into two categories:
- Stuff that can be ported in a straightforward way from bashdb
- Stuff that needs additional zsh support
Of the things which can be ported in a straight-forward way, however some of them I want to revise and simplify. In some cases, the fact that zsh has associative arrays simplifies code. On other cases, the code I wrote needs refactoring and better modularization.
Writing documentation is important, but an extensive guide will have to wait. For now one can consult the reference guide that comes with bashdb: http://bashdb.sf.net/bashdb.html There is some minimal help to get a list of commands and some help for each.
Showing frame arguments
This can be done with or without support from zsh, albeit faster with help from zsh. Changing scope when changing frames however has to be done with zsh support.
other stuff including...
- signal handling,
None of this is rocket science. Should be pretty straight-forward to add.
Stopping points that can be used for breakpoint
Rocky Bernstein firstname.lastname@example.org