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


In addition to statically-compiled languages such as C, C++ and Rust, Pernosco can also support higher-level languages. We support Javascript running in the V8 virtual machine. For example, Pernosco can debug JS running in Node and Chromium (Web apps, browser extensions, Electron apps).

Almost all Pernosco features work as expected. Pernosco shows JS source code. You can search for executions of specific JS functions and source lines. Pernosco displays the values of JS variables. You can use JS variables in conditional and print expressions. Pernosco call stacks include both JS and native stack frames. Pernosco shows which lines in the current function activation were executed, and the callees view shows JS callees of JS functions.

JS and native debugging are fully integrated. For example you can inspect the native state (e.g. instructions executed) while JS is executing.

Pernosco supports simple source maps. If the source appears obfuscated, Pernosco pretty-prints it.

Try out the demo for yourself!

Currently this only works with the V8 interpreter, not its compilers. You need to pass the flags --prof --prof-sampling-interval 1000000 --jitless --expose-gc --no-compilation-cache to V8 (e.g. see instructions for Chromium).

Pernosco does not provide a full "Web devtools" experience — we don't currently suport inspecting non-JS browser state.

<< Instruction execution Browser UI integration >>