The VS Code JavaScript debugger
Перейти к файлу
Connor Peet a5977a0a9f
1.95.2
2024-10-31 10:00:06 -07:00
.ci chore: fix SBOM generation (#2074) 2024-09-04 18:58:57 -07:00
.github/ISSUE_TEMPLATE chore: move prettier->dprint 2024-08-30 10:01:21 -07:00
.husky fix: cannot read property error 2023-03-02 14:15:59 -08:00
.vscode chore: move prettier->dprint 2024-08-30 10:01:21 -07:00
resources docs: update readme, make logo dark-background-safe (#2066) 2024-08-30 11:43:09 -07:00
src fix: use macrotask state boundary in thread statequeue (#2116) 2024-10-31 09:59:56 -07:00
testWorkspace fix: inconsistent display of strings with quotes (#1959) 2024-03-02 09:28:29 -08:00
.eslintrc.js fix: hover evaluation incorrectly showing undefined (#2048) 2024-07-26 02:07:22 +02:00
.gitattributes fixup! cases 2020-10-16 11:55:54 -07:00
.gitignore chore: update vscode-tas-client dependency for CG 2022-03-02 11:00:03 -08:00
.mocharc.unit.js chore: remove webpack and tsb, use esbuild (#1581) 2023-03-01 16:29:07 -08:00
.nvmrc feat: initial DWARF debugger integration 2023-09-15 16:48:08 -07:00
.vscodeignore chore: remove webpack and tsb, use esbuild (#1581) 2023-03-01 16:29:07 -08:00
CDP_SHARE.md docs: add cdp sharing to changelog and write docs 2021-04-07 09:53:46 -07:00
CHANGELOG.md docs: prep for 1.95 2024-10-23 08:31:44 -07:00
CODE_OF_CONDUCT.md chore: update prettier 2020-04-07 09:42:17 -07:00
COMMON_PROBLEMS.md chore: take ownership of the default launch types 2021-08-03 12:32:58 -07:00
CONTRIBUTING.md Update CONTRIBUTING.md 2021-01-26 16:28:16 -08:00
CodeQL.yml chore: fix codeql warnings 2024-01-29 14:10:11 -08:00
LICENSE Initial commit 2019-07-25 13:23:22 -07:00
OPTIONS.md feat: add basic network view, support experimental networking for node (#2053) 2024-08-08 11:45:15 -07:00
README.md docs: update readme, make logo dark-background-safe (#2066) 2024-08-30 11:43:09 -07:00
README.nightly.md Tweaks to the gulpfile and nightly build (#85) 2019-11-13 14:32:59 -08:00
SECURITY.md chore: apply formatting to security.md (#1281) 2022-05-18 15:49:35 -07:00
dprint.json feat: add getPreferredUILocation request for other tooling (#2075) 2024-09-05 18:13:30 +02:00
gulpfile.js feat: update snippets for config resolution, add tool completion (#2067) 2024-08-31 07:32:19 +02:00
package-lock.json 1.95.2 2024-10-31 10:00:06 -07:00
package.json 1.95.2 2024-10-31 10:00:06 -07:00
package.nls.json chore: move network view behind a setting (#2059) 2024-08-27 17:11:00 -07:00
tsconfig.json feat: update snippets for config resolution, add tool completion (#2067) 2024-08-31 07:32:19 +02:00

README.md

vscode-js-debug

This is a DAP-based JavaScript debugger. It debugs Node.js, Chrome, Edge, WebView2, VS Code extensions, Blazor, React Native, and more. It is the default JavaScript debugger in Visual Studio Code and Visual Studio, and the standalone debug server can also be used in other tools such as nvim.

Usage

If you're using Visual Studio or Visual Studio Code, js-debug is already installed. Otherwise, please consult your editor's documentation for possible installation instructions. Builds of the VS Code extension and standalone DAP server are available on the releases page.

See OPTIONS.md for a list of options you can use in your launch configurations.

Nightly Extension

The shipped version of VS Code includes the js-debug version at the time of its release, however you may want to install our nightly build to get the latest fixes and features. The nightly build runs at 5PM PST on each day that there are changes (see pipeline). To get the build:

  1. Open the extensions view (ctrl+shift+x) and search for @builtin @id:ms-vscode.js-debug
  2. Right click on the JavaScript Debugger extension and Disable it.
  3. Search for @id:ms-vscode.js-debug-nightly in the extensions view.
  4. Install that extension.

Notable Features

In js-debug we aim to provide rich debugging for modern applications, with no or minimal configuration required. Here are a few distinguishing features of js-debug beyond basic debugging capabilities. Please refer to the VS Code documentation for a complete overview of capabilities.

Debug child processes, web workers, service workers, and worker threads

In Node.js, child processes and worker threads will automatically be debugged. In browsers, service workers, webworkers, and iframes will be debugged as well. While debugging workers, you can also step through postMessage() calls.

Preview

Debug WebAssembly with DWARF symbols

The debugger automatically reads DWARF symbols from WebAssembly binaries, and debugs them. The usual debugging features are available, including limited evaluation support via lldb-eval.

Preview

Debug Node.js processes in the terminal

You can debug any Node.js process you run in the terminal with Auto Attach. If auto attach isn't on, you can run the command Debug: Toggle Auto Attach to turn it on. Next time you run a command like npm start, we'll debug it.

Preview

Once enabled, you can toggle Auto Attach by clicking the Auto Attach: On/Off button in the status bar on the bottom of your screen. You can also create a one-off terminal for debugging via the Debug: Create JavaScript Debug Terminal command.

Profiling Support

You can capture and view performance profiles natively in VS Code, by clicking on the button in the Call Stack view, or through the Debug: Take Performance Profile command. The profile information collected through VS Code is sourcemap-aware.

We support taking and visualizating CPU profiles, heap profiles, and heap snapshots.

Preview

Instrumentation breakpoints

When debugging web apps, you can configure instrumentation breakpoints from VS Code in the "Event Listener Breakpoints" view.

Preview

Return value interception

On a function's return statement, you can use, inspect, and modify the $returnValue.

Preview

Note that you can use and modify properties on the $returnValue, but not assign it to--it is effectively a const variable.

Pretty-print minified sources

The debugger can pretty print files, especially useful when dealing with minified sources. You can trigger pretty printing by clicking on the braces {} icon in editor actions, or via the Debug: Pretty print for debugging command.

Preview

Experimental Network View

The debugger allows viewing network traffic of browser targets and Node.js >22.6.0. This requires enabling the debug.javascript.enableNetworkView setting.

Preview

Advanced Rename Support

When using a tool that emits renames in its sourcemap, the debugger maps renamed variables in all displayed views, and also rewrites evaluation requests to use the renamed identifiers, allowing near-source-level debugging of minified code.

Conditional Exception Breakpoints

As in most debuggers, you can pause on caught exceptions, but you can also filter the exceptions you want to pause on by checking against the error object. In VS Code, you can do this by clicking the pencil icon in the Breakpoints view.

Preview

Excluded Callers

If you have a breakpoint you want to pause on, but not when called from certain frames, you can right click on call frames in the stack trace view to "exclude caller" which prevents pausing on that breakpoint when the requested caller is in the stack trace.

Preview

Step-in Targets

When paused on a location with multiple calls or expressions, the debugger supports the Debug: Step Into Target action that allows you to request a specific expression you wish to step into.