microsoft / vscode-js-debug

A DAP-compatible JavaScript debugger. Used in VS Code, VS, + more
MIT License
1.67k stars 283 forks source link

Breakpoint not finding source file when using a registered transpiler #2101

Closed JustinGrote closed 1 month ago

JustinGrote commented 1 month ago

Describe the bug Continuation of https://github.com/microsoft/vscode-test-cli/issues/9#issuecomment-2404099145

To Reproduce Steps to reproduce the behavior:

  1. Make a debug config that uses esbuild/register to transpile the files with sourcemap enabled (you could use tsc-node or any other for this purpose)
  2. Set a breakpoint and run extension host to that file
  3. Breakpoint hits, opens editor to ephemeral transpiled TS file breakpoint. Sourcemap info is present

Expected: It would open to the original file location specified in the sourcemap, not the ephemeral version produced via the register transpiler.

Of note, the editor window shows the URL of the file "correctly", even though this isn't the actual content of the file. Image

Log File

vscode-debugadapter-7381afb9.json.gz (nothing obvious in the DAP logs)

VS Code Version: 1.94.1

Additional context Decoded base64 of the sourcemap:

{
  "version": 3,
  "sources": ["c:\\Users\\jgrote\\Projects\\vscode-adapter\\test\\extension.test.ts"],
  "sourcesContent": ["import { workspace } from \"vscode\"\n\ndescribe('test', () => {\n\tit('test', async () => {\n\t\tawait workspace.getConfiguration('editor').update('tabSize', 8, true)\n\t\tconst actual = workspace.getConfiguration('editor').get('tabsize')\n\t\tactual?.should.equal(8)\n\t})\n})\n"],
  "mappings": ";;AAAA,oBAA0B;AAE1B,SAAS,QAAQ,MAAM;AACtB,KAAG,QAAQ,YAAY;AACtB,UAAM,wBAAU,iBAAiB,QAAQ,EAAE,OAAO,WAAW,GAAG,IAAI;AACpE,UAAM,SAAS,wBAAU,iBAAiB,QAAQ,EAAE,IAAI,SAAS;AACjE,YAAQ,OAAO,MAAM,CAAC;AAAA,EACvB,CAAC;AACF,CAAC;",
  "names": []
}
JustinGrote commented 1 month ago

@connor4312 thanks so much! I'll test in the next nightly. This has been bugging me forever and will be a huge leap to my productivity if it works. You're the man!