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.