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


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 >>