Let’s Rethink Debugging
summary
Explains why common techniques (print, logging, debuggers) trade ease for information and claims no current tool is as effortless as print yet as informative as a debugger. Shows how Python’s bytecode and the settrace API can record stack operations to reconstruct dataflow, and demos a prototype called Cyberbrain that builds value-flow graphs (currently limited to a single function but working). Compares related tools like PySnooper and warns DAP limits debugger innovation while urging more experimental debuggability.
AI-written summary · about
chapters (23)
- 0:00Intro
- 0:33What we'll cover
- 0:57Four Type of Errors
- 1:40In this context, debugging is about
- 2:42Debugging in EDSAC
- 3:05The 80's: debuggers
- 3:19Debugging Methods
- 4:38Why Logging
- 5:28Why Debugger
- 5:54Why not Debugger
- 6:33Pain point one
- 7:53Pain point two
- 8:41Another way
- 10:13An Ideal Debugging Tool
- 10:45Python bytecode
- 11:36CPython Virtual Machine
- 13:48Let's use it for debugging
- 18:59Cyerbrain is an attempt to solve the two pain points
- 19:42Existing tools are
- 19:52becoming calcified
- 21:14New Tools
- 22:00An Example: PySnooper
- 23:52What can we do?
related talks
28mWhat makes a Python debugger possible and how can we make it 100x faster
50mHow I built a power debugger out of the standard library and things I found on the internet
23mTrace functions: Building a tiny debugger
12mDebugging Python in Production: Practical Techniques Beyond Print Statements
06mImproving Debuggability with GDB's Python API
34mDebugging python applications inside k8s environment
27mThe Hidden Power of the Python Runtime
40mDebugging PySpark - Pretending to make sense of JVM stack traces
