status |
---|
research (please don't share) |
-
General purpose debuggers such as
gdb
are underused -
Theory: people who use general purpose debuggers also care about memory layout, e.g.:
-
Possible fix: domain-specific debuggers, that focus on displaying your application state at the level of abstraction that you think of it, rather than how the programming language that you are using happens to lay it out in memory
- Assumptions: determinism, state machine
- Record inputs (and states) in circular buffer, dump to disk/SQLite db on error
- TigerbeetleDB's demo https://youtu.be/w3WYdYyjek4?t=3175
- https://spritely.institute/news/introducing-a-distributed-debugger-for-goblins-with-time-travel.html
- Avoid storing the state in the trace (if deterministic)
- Avoiding infinite traces via state snapshots
- Turn off logging (if deterministic)
- Audit trails
- General purpose formats for states, inputs and outputs against which generic debuggers can be written against? Structured JSON? Binary?
-
The history of time traveling debuggers
-
Mozilla's
rr
debugger -
Command sourcing
-
Jamie Brandon's post Local state is harmful (2014)