pode stands for Python Omniscient Debugger.
It all began in 1969, when Bob Balzer implemented a version of omniscient debugging for Fortran.
Omniscient debugging describes the concept that debuggers should know everything about the run of a program, that they should remember every state change, and be able to present to you the value of any variable at any point in time. Essentially, omniscient debugging means that you can go backwards in time.
Inspired by the article "Omniscient Debugging - an easier way to find program bugs" by Bil Lewis , I decided to explore the issue in Python. This project is an informal exploration on the subject.
+----------+ +----------+ +-------+ +---------+ | Inferior |==>| Event |==> | Event |<->| Info | | Process | | Recorder | | DB | | Browser | +----------+ +----------+ +-------+ +---------+
The process being debugged is called the inferior process. The event recorder is responsible for monitoring the inferior processes to detect events. These events are recorded in the event database. The info browser queries the event database and displays information related to the recorded events.
My first strategy is to leverage sys.settrace as the main hook in the Python Virtual Machine (PVM) to record events. A function registered with sys.settrace will act as event recorder. There can be many event database backends. The main requirement is support for fast data insertions (write operations). I would like to explore Redis, ElasticSearch and Neo4J as backends. Moreover, I will use a regular Web browser to build the info browser.
For the time being, we are not resorting to application code instrumentation.
- epdb remarkable Reversible Debugger by Patrick Sabin
- winpdb, rpdb2
- TOD is a portable Trace-Oriented Debugger for Java integrated into the Eclipse IDE. See "Scalable Omniscient Debugging" by Guillaume Pothier, Éric Tanter and José Piquer.
Several articles examined are included in the directory docs/external.