Code Monkey home page Code Monkey logo

pode's Introduction

pode

pode stands for Python Omniscient Debugger.

Feel free to join the discussion via email or browse the discussion group.

About

It all began in 1969, when Bob Balzer implemented a version of omniscient debugging for Fortran.

From [1]:

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 Debbuging - an easier way to find program bugs" by Bil Lewis [1], I decided to explore the issue in Python. This project is an informal exploration on the subject.

Architecture

+----------+   +----------+    +-------+   +---------+
| 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.

Strategies

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.

Related Work

  • pdb
  • ipdb
  • pydb
  • pudb
  • 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.

References

Several articles examined are included in the directory docs/external.

  • [1] "Omniscient Debbuging - an easier way to find program bugs". Bil Lewis. Dr. Dobbs Journal. June 2005.
  • [2] Epdb - Code and Thesis
  • [3] Video at YouTube (in pt-br) with a presentation about this project. http://youtu.be/MxzZXBI5T1s

pode's People

Contributors

rodsenra avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.