WebStorm 2018.3 Help

Debugging JavaScript in Chrome

WebStorm provides a built-in debugger for your client-side JavaScript code that works with Chrome. The video and the instructions below walk you through the basic steps to get started with this debugger.

Before you start, configure the built-in debugger as described in Configuring JavaScript Debugger. To have the changes you make to your HTML, CSS, or JavaScript code immediately shown in the browser without reloading the page, activate the the Live Edit functionality. See Live Edit in HTML, CSS, and JavaScript for details.

Debugging an application running on the built-in server

WebStorm has a built-in web server that can be used to preview and debug your application. This server is always running and does not require any manual configuration. All the project files are served on the built-in server with the root URL http://localhost:<built-in server port>/<project root>, with respect to the project structure.

To start debugging

  1. Set the breakpoints in the JavaScript code, as required.

  2. Open the HTML file that references the JavaScript to debug or select the HTML file in the Project Tool Window.

  3. On the context menu of the editor or the selection, choose Debug <HTML_file_name>. WebStorm generates a debug configuration and starts a debugging session through it. The file opens in the browser, and the Debug tool window appears.

  4. In the Debug tool window, proceed as usual: step through the program, stop and resume the program execution, examine it when suspended, view actual HTML DOM, etc.

Example

Suppose you have a simple application that consists of an index.html file and an index.js file, where index.html references index.js. To start debugging this application using the built-in server, open index.html in the editor and choose Debug 'index.html' on the context menu:

ws_quick_start_debug_built_in_server_1.png
WebStorm creates a run/debug configuration automatically, and a debugging session starts:
ws_quick_start_debug_built_in_server_2.png
To restart the new run/debug configuration, click Debug in the upper right-hand corner of the WebStorm window or choose Run | Debug on the main menu:
ws_quick_start_debug_built_in_server_3.png

Debugging an application running on an external web server

Often you may want to debug client-side JavaScript running on an external development web server, e.g. powered by Node.js.

To start debugging

  1. Set the breakpoints in the JavaScript code, as required.

  2. Run the application in the development mode. Often you need to run npm start for that. When the development server is ready, copy the URL address at which the application is running in the browser - you will need to specify this URL address in the run/debug configuration.

  3. Create a debug configuration of the type JavaScript Debug:
    Choose Run | Edit Configuration on the main menu, click icons general add on the toolbar and select JavaScript Debug from the pop-up list. In the Run/Debug Configuration: JavaScript Debug dialog that opens, specify the URL address at which the application is running. This URL can be copied from the address bar of your browser as described in Step 2 above. Click OK to save the configuration settings.

  4. Choose the newly created configuration in the Select run/debug configuration drop-down list on the toolbar and click icons actions startDebugger svg next to the list. The URL address specified in the run configuration opens in the browser and the Debug tool window appears.

  5. In the Debug tool window, proceed as usual: step through the program, stop and resume the program execution, examine it when suspended, view actual HTML DOM, etc.

See Debugging React Applications and Debugging Angular Applications for examples.

Debugging asynchronous code

WebStorm supports debugging asynchronous client-side JavaScript code. WebStorm recognizes breakpoints inside asynchronous code, stops at them, and lets you step into such code. As soon as a breakpoint inside an asynchronous function is hit or you step into asynchronous code, a new element Async call from <caller> is added in the Frames pane of the Debugger tab. WebStorm displays a full call stack, including the caller and the entire way to the beginning of the asynchronous actions.

The image below shows an example of a JavaScript debugging session.

ws_debug_tool_window_async.png
The debugger stops at line3(breakpont), then at line5(breakpoint). On clicking Step into, the debugger will stop at line5 (on function), then will move to line6.

The asynchronous debugging mode is turned on by default. To disable asynchronous stack traces, set js.debugger.async.call.stack.depth in Registry to 0.

Debugging workers

WebStorm supports debugging Service Workers and Web Workers. WebStorm recognizes breakpoints in each worker and shows the debug data for it as a separate thread in the Frame pane on the Debugger tab of the Debug Tool Window.

Note that WebStorm can debug only dedicated workers, debugging for shared workers is currently not supported.

To debug workers

  1. Set the breakpoints in the Workers to debug.

  2. If you are using Service Workers, make sure the Allow unsigned requests checkbox on the Debugger page is selected. Otherwise your service workers may be unavailable during a debug session:

    ws_debug_service_workers.png

  3. Create a debug configuration of the type JavaScript Debug as described above in Debugging client-side JavaScript running on an external web server.

  4. Choose the newly created configuration in the Select run/debug configuration drop-down list on the tool bar and click Debug icons actions startDebugger svg.

    The HTML file specified in the run configuration opens in the chosen browser and the Debug Tool Window opens with the Frames drop-down list showing all the Workers:

    ws_js_debug_workers_frames.png

    To examine the data (variables, watches, etc.) for a Worker, select its thread in the list and view its data in the Variables and Watches panes. When you select another Worker, the contents of the panes are updated accordingly.

Last modified: 9 January 2019

See Also