Project sf.net download

nldebug user help

nldebug is for the non-linear, multi-threaded or non-causal universe.

nldebug is a graphical debugger for programs that don't just follow one stream (e.g. threaded, web applications). It even allows debugging of headless computers, distributed environments and for crashing applications.

What does nldebug do?

nldebug listens to an UDP port (5542 by default).
Then it distributes each packet (usually only one line) according to the split regex to different tabs.

How can I use it to debug my application?

In the program you want to debug, whereever you want to write debug messages, call a function that sends one line out to localhost, udp-port 5542.
You can find helper functions for various languages in the examples directory.

Or, pipe the debug output to "netcat --udp localhost 5542".

Tip! If you add timestamps to the debug output messages, you can also measure how long parts of your program take.

Tip! If you add stack traces to the debug output messages (after a empty line by itself), you can jump from a debug output to the exact line in your editor.

Screencasts

These are flash screencasts of example usages:
  1. Presenting Stacktrace functionality
  2. Debugging a ssh session.

    This shows that you can debug applications without having to change them. It emphasizes how you can modify debug levels while not having to restart the app.

    $ ssh -v -v -v $LOGIN 2>&1 | examples/sendlines.py

  3. A simple inheritance program example using nldebug.

    This shows the flexibility of the regular expression distributor.

  4. Pretty much the same as the third.

Benefits

Example usage scenarios

Language bindings

You can either

You will want the second in web applications.

I provide language bindings (these are just ~10 lines) in Python, PHP and C

Documents

Project sf.net download

License

nldebug is under a BSD license (OSI approved, GPL compatible).
The language bindings are in public domain.
If you have a license problem or questions, just mail me: david.draco@gmail.com or file a bug in the bugtracker.