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

Explaining dataflow

Pernosco can trace dataflow backwards in time, from where a variable has an incorrect value back to where that variable was set — instantly. Clicking on a displayed value opens a "dataflow" view showing where the value came from. When the value set was simply copied from some other memory or register location, Pernosco displays the copy step and then automatically continues the explanation by following the source of the copy further backward in time. Helping the user skip over trivial copy steps accelerates the debugging process, especially for move-intensive code like Rust and some modern C++. On the other hand, some moves are important, e.g. "print" functions that copy data into output buffers, and Pernosco has heuristics to highlight those.

<< Call stacks Multiprocess >>