vscode-js-debug icon indicating copy to clipboard operation
vscode-js-debug copied to clipboard

Support for "Friendly Call Frames" in call stack, like Chrome's devtools

Open joshtynjala opened this issue 1 year ago • 1 comments

The debugger in Chrome browser's devtools has a feature called "Friendly Call Frames" that renders the call stack using the original/unminified function names, if those name mappings are defined at a specific location in a source map (.js.map) file. This provides a better developer experience than rendering minified or obfuscated function names. It would be great to have this feature in vscode-js-debug too.

I'll just copy the description from babel/babel#14907 because it describes how the feature works very well.

Before: image

After: image

To unminify a frame, you need to have a name attached to the ( of the declaration site. So, we need to have a name:

function foo() {
//          ^ Here
  bar(baz);
}

function bar(callback) {
//          ^ Here
  callback();
}

function baz() {
//          ^ Here
  throw new Error('test');
}

foo();

It doesn't matter that we've properly named the bar/callback/Error/foo identifiers at before the (, the segment that includes the ( must also include it.

joshtynjala avatar Aug 08 '24 20:08 joshtynjala

Seems sensible 👍

connor4312 avatar Aug 08 '24 21:08 connor4312