Skip to content

A hybrid algorithmic debugger and program synthesis engine for Python

Notifications You must be signed in to change notification settings

tomasraposo/PyDD

Repository files navigation

PyDD

A hybrid algorithmic debugger and program synthesis engine for Python

Repository structure

├── app.py
├── ast_transformer.py
├── coverage.dat
├── coverage.py
├── debugging_strategy.py
├── etnode.py
├── event.py
├── execution_tree.py
├── frontend
│   ├── package.json
│   ├── package-lock.json
│   ├── public
│   ├── README.md
│   └── src
│       ├── App.js
│       ├── App.test.js
│       ├── ColorModeSwitcher.js
│       ├── index.js
│       ├── Logo.js
│       ├── logo.svg
│       ├── reportWebVitals.js
│       ├── serviceWorker.js
│       ├── setupTests.js
│       ├── test-utils.js
│       ├── TreeView.js
│       └── TreeViewMenu.js
├── grammar.py
├── oracle.py
├── program_repairer.py
├── pydd.py
├── pydd_repl.py
├── query.py
├── README.md
├── server.py
├── trace.dat
├── trace_iterator.py
└── tracer.py

Installation

In the frontend directory run:

npm install

Install all dependencies for client-side application.

In the parent (base) directory run:

pip install tornado dill astor pygments rich astor astunparse textwrap

Usage:

./app.py -f ~/Desktop/bug1.py -d heaviest-first -pr bus

CLI
usage: app.py [options]
app.py: error: the following arguments are required: -f, -d, -pr

OPTIONS
-f 	target file
-i 	enable interactive debugging
-w 	enable web mode
-d 	debugging strategy
-pr	program repair strategy
-t 	trace file
-c 	coverage file

Debug commands

class PyDDRepl. do_next(args)

class PyDDRepl. do_prev(args)

class PyDDRepl. do_print(args)

class PyDDRepl. do_break(args)

class PyDDRepl. do_watch(args)

class PyDDRepl. do_remove(args)

class PyDDRepl. do_continue(args)

class PyDDRepl. do_exit(args)

class PyDDRepl. do_list(args)

class PyDDRepl. do_repair(args)

Debugging strategies

class DebuggingStrategy. single_stepping

class DebuggingStrategy. top_down

class DebuggingStrategy. heaviest_first

class DebuggingStrategy. divide_and_query

Program repair strategies

class Grammar. bus

class Grammar. bfs

class Grammar. dfs