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

<< Overview Debugging workflow: CI >>