1. Overview
  2. Debugging workflow
  3. Debugging workflow: CI
  4. Basic interface
  5. Visualizing control flow
  6. Call stacks
  7. Explaining dataflow
  8. Multiprocess
  9. Search box
  10. Source files
  11. Condition and print expressions
  12. Toolbox
  13. Alerts
  14. Application logs
  15. Callees
  16. View operators
  17. Notebook
  18. Instruction execution
  19. Javascript
  20. Browser UI integration
  21. Screenshots
  22. Additional views
  23. GDB
  24. System debug info
  25. Compiler issues
  26. The Pernosco vision
  27. Related work

Debugging workflow

Anyone can make an rr recording of a bug and then submit it to Pernosco using our pernosco-submit script. (Users need to obtain pernosco-submit credentials; individual users can find those credentials in their account page.) There is a delay while Pernosco processes the recording. If successful, Pernosco sends an email to the submitter with a URL to the Pernosco debugger session. If Pernosco fails to process the recording (because of a bug, technical limitation or the recording is too large), it sends an email to the submitter explaining the error and users are not charged.

Pernosco processing takes some time, depending on the size of the recording — usually a matter of minutes — so it's helpful to schedule other work between submitting a recording and debugging it. In exchange, Pernosco provides a fast uninterrupted debugging experience.

Leveraging QA resources

Pernosco decouples the work of reproducing a bug from the work of debugging the bug. Therefore, instead of having developers work on reproducing bugs, QA staff can reproduce bugs, generate Pernsoco sessions and pass the Pernosco URLs to developers (e.g. via bug tracking systems). This can save developer time and eliminate the issue of developers being unable to reproduce bugs reported by QA.

Systematic testing

This approach applies not just to manually reproduced bugs but also automated reproduction. Test infrastructure such as fuzzers can be augmented so that whenever they identify a bug, they automatically produce an rr recording of the bug, submit it to Pernosco, and forward the Pernosco debugger session URL to relevant developers. Developers can simply click on the link and immediately start inspecting the state of the failed program — effectively eliminating any excuse for not at least taking a look at the bug.