This extension has been deprecated as Visual Studio Code now has a bundled JavaScript Debugger that covers the same functionality. It is a debugger that debugs Node.js, Chrome, Edge, WebView2, VS Code extensions, and more. You can safely un-install this extension and you will still be able to have the functionality you need.
Please file any issues you encounter in that repository.
A VS Code extension to debug your JavaScript code in the Google Chrome browser, or other targets that support the Chrome DevTools Protocol.
Supported features
Unsupported scenarios
When your launch config is set up, you can debug your project. Pick a launch config from the dropdown on the Debug pane in Code. Press the play button or F5 to start.
The extension operates in two modes - it can launch an instance of Chrome navigated to your app, or it can attach to a running instance of Chrome. Both modes requires you to be serving your web application from local web server, which is started from either a VS Code task or from your command-line. Using the url
parameter you simply tell VS Code which URL to either open or launch in Chrome.
Just like when using the Node debugger, you configure these modes with a .vscode/launch.json
file in the root directory of your project. You can create this file manually, or Code will create one for you if you try to run your project, and it doesn't exist yet.
Tip: See recipes for debugging different frameworks here: https://github.com/Microsoft/vscode-recipes
Two example launch.json
configs with "request": "launch"
. You must specify either file
or url
to launch Chrome against a local file or a url. If you use a url, set webRoot
to the directory that files are served from. This can be either an absolute path or a path using ${workspaceFolder}
(the folder open in Code). webRoot
is used to resolve urls (like "http://localhost/app.js") to a file on disk (like /Users/me/project/app.js
), so be careful that it's set correctly.
{
"version": "0.1.0",
"configurations": [
{
"name": "Launch localhost",
"type": "chrome",
"request": "launch",
"url": "http://localhost/mypage.html",
"webRoot": "${workspaceFolder}/wwwroot"
},
{
"name": "Launch index.html",
"type": "chrome",
"request": "launch",
"file": "${workspaceFolder}/index.html"
},
]
}
If you want to use a different installation of Chrome, you can also set the runtimeExecutable
field with a path to the Chrome app.
With "request": "attach"
, you must launch Chrome with remote debugging enabled in order for the extension to attach to it. Here's how to do that:
Windows
--remote-debugging-port=9222
<path to chrome>/chrome.exe --remote-debugging-port=9222
macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222
Linux
google-chrome --remote-debugging-port=9222
If you have another instance of Chrome running and don't want to restart it, you can run the new instance under a separate user profile with the --user-data-dir
option. Example: --user-data-dir=/tmp/chrome-debug
. This is the same as using the userDataDir
option in a launch-type config.
Launch Chrome and navigate to your page.
An example launch.json
file for an "attach" config.
{
"version": "0.1.0",
"configurations": [
{
"name": "Attach to url with files served from ./out",
"type": "chrome",
"request": "attach",
"port": 9222,
"url": "<url of the open browser tab to connect to>",
"webRoot": "${workspaceFolder}/out"
}
]
}
Cannot connect to the target: connect ECONNREFUSED
)Normally, if Chrome is already running when you start debugging with a launch config, then the new instance won't start in remote debugging mode. So by default, the extension launches Chrome with a separate user profile in a temp folder. Use the userDataDir
launch config field to override or disable this. If you are using the runtimeExecutable
field, this isn't enabled by default, but you can forcibly enable it with "userDataDir": true
.
If you are using an attach config, make sure you close other running instances of Chrome before launching a new one with --remote-debugging-port
. Or, use a new profile with the --user-data-dir
flag yourself.
For other troubleshooting tips for this error, see below.
If you see errors with a location like chrome-error://chromewebdata/
in the error stack, these errors are not from the extension or from your app - they are usually a sign that Chrome was not able to load your app.
When you see these errors, first check whether Chrome was able to load your app. Does Chrome say "This site can't be reached" or something similar? You must start your own server to run your app. Double-check that your server is running, and that the url and port are configured correctly.
You can also theoretically attach to other targets that support the same Chrome Debugging protocol, such as Electron or Cordova. These aren't officially supported, but should work with basically the same steps. You can use a launch config by setting "runtimeExecutable"
to a program or script to launch, or an attach config to attach to a process that's already running. If Code can't find the target, you can always verify that it is actually available by navigating to http://localhost:<port>/json
in a browser. If you get a response with a bunch of JSON, and can find your target page in that JSON, then the target should be available to this extension.
See our wiki page for some configured example apps: Examples
trace
: When true, the adapter logs its own diagnostic info to a file. The file path will be printed in the Debug Console. This is often useful info to include when filing an issue on GitHub. If you set it to "verbose", it will also log to the console.runtimeExecutable
: Workspace relative or absolute path to the runtime executable to be used. If not specified, Chrome will be used from the default install location.runtimeArgs
: Optional arguments passed to the runtime executable.env
: Optional dictionary of environment key/value pairs.cwd
: Optional working directory for the runtime executable.userDataDir
: Normally, if Chrome is already running when you start debugging with a launch config, then the new instance won't start in remote debugging mode. So by default, the extension launches Chrome with a separate user profile in a temp folder. Use this option to set a different path to use, or set to false to launch with your default user profile.url
: On a 'launch' config, it will launch Chrome at this URL.urlFilter
: On an 'attach' config, or a 'launch' config with no 'url' set, search for a page with this url and attach to it. It can also contain wildcards, for example, "localhost:*/app"
will match either "http://localhost:123/app"
or "http://localhost:456/app"
, but not "https://stackoverflow.com"
.targetTypes
: On an 'attach' config, or a 'launch' config with no 'url' set, set a list of acceptable target types from the default ["page"]
. For example, if you are attaching to an Electron app, you might want to set this to ["page", "webview"]
. A value of null
disables filtering by target type.sourceMaps
: By default, the adapter will use sourcemaps and your original sources whenever possible. You can disable this by setting sourceMaps
to false.pathMapping
: This property takes a mapping of URL paths to local paths, to give you more flexibility in how URLs are resolved to local files. "webRoot": "${workspaceFolder}"
is just shorthand for a pathMapping like { "/": "${workspaceFolder}" }
.smartStep
: Automatically steps over code that doesn't map to source files. Especially useful for debugging with async/await.disableNetworkCache
: If false, the network cache will be NOT disabled. It is disabled by default.showAsyncStacks
: If true, callstacks across async calls (like setTimeout
, fetch
, resolved Promises, etc) will be shown.breakOnLoad
: Experimental. If true, the debug adapter will attempt to set breakpoints in scripts before they are loaded, so it can hit breakpoints at the beginnings of those scripts. Has a perf impact.breakOnLoadStrategy
: The strategy used for breakOnLoad
. Options are "Instrument" or "Regex". Instrument "[tells] Chrome to pause as each script is loaded, resolving sourcemaps and setting breakpoints" Regex "[s]ets breakpoints optimistically in files with the same name as the file in which the breakpoint is set."You can use the skipFiles
property to ignore/blackbox specific files while debugging. For example, if you set "skipFiles": ["jquery.js"]
, then you will skip any file named 'jquery.js' when stepping through your code. You also won't break on exceptions thrown from 'jquery.js'. This works the same as "blackboxing scripts" in Chrome DevTools.
The supported formats are:
jquery.js
)node_modules
)node_modules/react/*.min.js
)This debugger also enables you to refresh your target by simply hitting the restart button in the debugger UI. Additionally you can map the refresh action to your favorite keyboard shortcut by adding the following key mapping to Key Bindings:
{
"key": "ctrl+r",
"command": "workbench.action.debug.restart",
"when": "inDebugMode"
}
Read more here https://github.com/Microsoft/vscode-chrome-debug-core/issues/91#issuecomment-265027348
The debugger uses sourcemaps to let you debug with your original sources, but sometimes the sourcemaps aren't generated properly and overrides are needed. In the config we support sourceMapPathOverrides
, a mapping of source paths from the sourcemap, to the locations of these sources on disk. Useful when the sourcemap isn't accurate or can't be fixed in the build process.
The left hand side of the mapping is a pattern that can contain a wildcard, and will be tested against the sourceRoot
+ sources
entry in the source map. If it matches, the source file will be resolved to the path on the right hand side, which should be an absolute path to the source file on disk.
A few mappings are applied by default, corresponding to some common default configs for Webpack and Meteor:
// Note: These are the mappings that are included by default out of the box, with examples of how they could be resolved in different scenarios. These are not mappings that would make sense together in one project.
// webRoot = /Users/me/project
"sourceMapPathOverrides": {
"webpack:///./~/*": "${webRoot}/node_modules/*", // Example: "webpack:///./~/querystring/index.js" -> "/Users/me/project/node_modules/querystring/index.js"
"webpack:///./*": "${webRoot}/*", // Example: "webpack:///./src/app.js" -> "/Users/me/project/src/app.js",
"webpack:///*": "*", // Example: "webpack:///project/app.ts" -> "/project/app.ts"
"webpack:///src/*": "${webRoot}/*", // Example: "webpack:///src/app.js" -> "/Users/me/project/app.js"
"meteor://��app/*": "${webRoot}/*" // Example: "meteor://��app/main.ts" -> "/Users/me/project/main.ts"
}
If you set sourceMapPathOverrides
in your launch config, that will override these defaults. ${workspaceFolder}
and ${webRoot}
can be used here. If you aren't sure what the left side should be, you can use the .scripts
command (details below). You can also use the trace
option to see the contents of the sourcemap, or look at the paths of the sources in Chrome DevTools, or open your .js.map
file and check the values manually.
Ionic and gulp-sourcemaps output a sourceRoot of "/source/"
by default. If you can't fix this via your build config, I suggest this setting:
"sourceMapPathOverrides": {
"/source/*": "${workspaceFolder}/*"
}
This extension can be used with the VS Code Remote Extensions to debug an app in a local Chrome window. Here's an example workflow using the Remote - SSH extension:
There are a couple caveats to this workflow:
If you have any other issues, please open an issue.
If your breakpoints aren't hit, it's most likely a sourcemapping issue or because you are having breakpoints in immediately executed code. If you for example have a breakpoint in a render function
that runs on page load, sometimes our debugger might not be attached to Chrome before the code has been executed. This means that you will have to refresh the page in Chrome after we have attached from VS Code to hit your breakpoint.
Alternatively, we have an experimental "break-on-load" configuration option which will make this timing issue more transparent. It landed in https://github.com/microsoft/vscode-chrome-debug-core/pull/241.
If you have a sourcemapping issue, please see https://github.com/Microsoft/vscode-chrome-debug#sourcemaps
This message means that the extension can't attach to Chrome, because Chrome wasn't launched in debug mode. Here are some things to try:
attach
type config, ensure that you launched Chrome using --remote-debugging-port=9222
. And if there was already a running instance, close it first or see note about --user-data-dir
above.port
property matches the port on which Chrome is listening for remote debugging connections. This is 9222
by default. Ensure nothing else is using this port, including your web server. If something else on your computer responds at http://localhost:9222
, then set a different port.launch
type config with the userDataDir
option explicitly disabled, close other running instances of Chrome - if Chrome is already running, the extension may not be able to attach, when using launch mode. Chrome can even stay running in the background when all its windows are closed, which will interfere - check the taskbar or kill the process if necessary.http://localhost:<port>/json
in a browser when you see this message - if there is no response, then something is wrong upstream of the extension. If there is a page of JSON returned, then ensure that the port
in the launch config matches the port in that url.webRoot
is set correctly if neededsourceRoot
and sources
properties in your sourcemap and make sure that they can be combined with the webRoot
property in your launch config to build the correct path to the original source files."devtool": "source-map"
option (in your webpack.config.js
file) as the others produce lower-fidelity sourcemaps and you may have issues setting breakpoints. See the full list of devtool options for webpack for more information..scripts
commandThis feature is extremely useful for understanding how the extension maps files in your workspace to files running in Chrome. You can enter .scripts
in the Debug Console to see a listing of all scripts loaded in the runtime, their sourcemap information, and how they are mapped to files on disk. The format is like this:
› <The exact URL for a script, reported by Chrome> (<The local path that has been inferred for this script, using webRoot, if applicable>)
- <The exact source path from the sourcemap> (<The local path inferred for the source, using sourceMapPathOverrides, or webRoot, etc, if applicable>)
Example:
.scripts
› eval://43
› http://localhost:8080/index.html (/Users/me/project/wwwroot/index.html)
› http://localhost:8080/out/test1.js (/Users/me/project/wwwroot/out/test1.js)
- /src/test1a.ts (/Users/me/project/wwwroot/src/test1a.ts)
- /src/test1b.ts (/Users/me/project/wwwroot/src/test1b.ts)
- /src/test1c.ts (/Users/me/project/wwwroot/src/test1c.ts)
› http://localhost:8080/out/test2.js (/Users/me/project/wwwroot/out/test2.js)
- /src/test2.ts (/Users/me/project/wwwroot/src/test2.ts)
If the paths of your source files show as not being resolved correctly here, you may have to change sourceMapPathOverrides
or webRoot
to help the debugger resolve them to real paths on disk.
If you are wondering what a script is, for example, that 'eval' script, you can also use .scripts
to get its contents: .scripts eval://43
.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
创建launch.json debug -> Add Configuration 在launch.json中的configurations中新增调试配置 -> AddConfiguration => {} Node.js:Electron Main => {} Chrome : Attach 在Electron Main中新增调试指令 “runtimeArgs”:["–remote-debuggi
vscode-PHP调试工具测试,vscode-php调试工具 [VS CODE] PHP调试环境配置步骤 STEP1 安装配置VS-Code-PHP STEP2 安装配置XDebug STEP3 配置VSCode调试器 扩展 Wampserver32 整合部署环境,集成Apache服务器 + MySQL + PHP一体的服务器配置环境 Wampserver版本: 3.0.6 32bit PHP版
解决办法: 将 vscode的 debugger for chrome 插件从4.12.9版本 回退到4.12.8版本
vscode-chrome-debug-core,是微软开发的一个开源库,该库是微软 Visual Studio Code Chrome 调试器的基础。 在新项目中使用: npm install --save vscode-chrome-debug-corenpm install --save-dev typingstypings install --global --save dt~es6-co
使用chrome调试android前端页面 下载Chrome浏览器 官方教程:remote-debugging 开源工具Stetho 功能: 安卓远程调试目前支持所有操作系统(Windows,Mac, Linux, and Chrome OS.)中调试,支持: 调试站点的页面 调试安卓原生App中的WebView 实时将安卓设备的屏幕图像同步显示到开发机器。 通过端口转发(port forward
Visual Studio Code - Open Source ("Code - OSS") The Repository This repository ("Code - OSS") is where we (Microsoft) develop the Visual Studio Code product together with the community. Not only do we
ES6 创建 tsconfig.json tsc --init { "compilerOptions": { "module": "commonjs", /* 用来指定要使用的模块标准: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ "target": "es6" /* targe
Visual Studio Code 扩展 Beautify:Beautify code in place for VS Code ESLint:Integrates ESLint into VS Code Material Theme:Maybe the best theme on VS Code vscode-icons:Icons for Visual Studio Code Emmet:
VSCode Neovim 是将 Neovim 集成到 VSCode 的插件,该插件将 Neovim 实例完全嵌入到 VSCode,而非半成品的 VIM 模拟。此外 VSCode 原生功能被用于插入模式和编辑器命令。 主要特性 通过使用 Neovim 作为后端,几乎完全集成了功能完整的 VIM 支持自定义init.vim和许多 VIM 插件 “一等公民”支持且无延迟的插入模式,让 VSCode 做