1. Overview
  2. Debugging and CI
  3. Other workflows
  4. Debugging as a service
  5. Basic interface
  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. Browser UI integration
  20. Additional views
  21. GDB
  22. System debug info
  23. Compiler issues
  24. Future work
  25. Related work
  26. Conclusions


Pernosco was designed from the start to support debugging of multiprocess recordings. All debugging operations operate across all processes by default.

Multiprocess applications such as Firefox share memory between processes and these memory regions are typically mapped at different addresses in each process. Accurately tracking data flow between processes requires the debugger to understand how the virtual address space of each process maps onto "physical memory". Pernosco does this, and therefore tracing the dataflow to an address X in one process may reveal it was written at address Y in another process. (This can also happen within a single process when it has multiple shared mappings of the same page(s).)

<< Explaining dataflow Search box >>