View | Tool Windows | Debug

⌘5 or ⌘5⌘5 or ⌘5⌘5 or ⌘5⌥ 5, ⌥5 or ⌥5⌥ 5, ⌥5 or ⌥5

In this topic:

Overview

The Debug tool window becomes available when you start debugging.

It displays the output generated by the debugging session for your application. If you are debugging multiple applications, the output for each application is displayed in a separate tab named after the corresponding run/debug configuration.

For each application, there are the following nested tabs:

Each area has a context menu that allows you to configure its behavior and navigate between tabs.

Each of the tabs and areas can be hidden/restored, or moved to a location of your choice.

Debug toolbar

ItemTooltip and ShortcutDescription
stop_and_rerunRerun

⌘R or ⌘R⌃F5 or ⌃F5^ F5, ⌃F5 or ⌃F5^ F5, ⌃F5 or ⌃F5
Click this button to stop the current application and run it again. When an application is stopped, this button toggles to debug_resume.
debug_resumeDebug

⌥⌘R or ⌥⌘RF9 or F9F8 or F8F5, F5 or F5F9, F9 or F9
When the current application is stopped, click this button to debug it again. When an application is running, this button toggles to stop_and_rerun.
runResume Program

⌥⌘R or ⌥⌘RF9 or F9F8 or F8F5, F5 or F5F9, F9 or F9
When an application is paused, click this button to resume program execution.
pauseIconPause Program

^ Pause
Click this button to pause program execution.

Note that the button is not available for Run/Debug Configuration: Node JS, Run/Debug Configuration: Node JS Remote Debug, and Run/Debug Configuration: NodeUnit.

stopStop

⌘F2 or ⌘F2⌘F2 or ⌘F2⌘F2 or ⌘F2⇧ F5, ⇧F5 or ⇧F5^ F2, ⌃F2 or ⌃F2
Click this button to terminate the current process externally by means of the standard shutdown script.

For a Node.js run configuration, clicking the button once invokes soft kill allowing the Node.js application to catch the SIGINT event and perform graceful termination (on Windows, the ⌘C or ⌘C⌘C or ⌘C⌘C or ⌘C^ C, ^ Insert, ⌃C or ⌃C^ Insert, ⌥ C, Escape, W, ⌥C, ⎋, W, ⌥C or ⎋, W event is emulated). After the button is clicked once, it is replaced with icon_run_tool_window_kill.png indicating that subsequent click will lead to force termination of the application, e.g. on Unix SIGKILL is sent.

debug_view_breakpointsView Breakpoints

⇧⌘F8 or ⇧⌘F8⇧⌘F8 or ⇧⌘F8⇧⌘F8 or ⇧⌘F8⌥ F9, ⌥F9 or ⌥F9^ ⇧ F8, ⌃⇧F8 or ⌃⇧F8
Click this button to open the Breakpoints dialog box where you can configure breakpoints behavior.
debug_mute_breakpointsMute BreakpointsUse this button to toggle breakpoints status (enabled/disabled). You can temporarily disable all breakpoints in the project to execute the program without stopping at breakpoints.
dumpThreadsIconGet thread dumpClick this button to open the Dump tab.
debug_layoutRestore LayoutClick this button abandon changes to the current layout and return to the default state.
projectToolWindowSettingsIconSettingsClick this button to open the menu with the following options available:
  • Show Values Inline: select this option to enable the Inline Debugging feature that allows viewing the values of variables right next to their usage in the editor.
  • Show Method Return Values: select this option to display the return values of the last executed method.
  • Auto-Variables Mode: select this option if you want IntelliJ IDEA debugger to automatically evaluate certain variables (the variables at breakpoints plus several lines before and after the breakpoint).
  • Sort Values Alphabetically: select this option to sort the values in the Variables pane in the alphabetical order.
  • Unmute breakpoints on session finish: select this option to re-enable all disabled breakpoints after the debugging session has been finished.
pin2PinClick this button to pin or unpin the currently selected tab.
closeClose

⌃⇧F4 or ⌃⇧F4⇧⌘F4 or ⇧⌘F4⌘W or ⌘W^ ⇧ F4, ⌃⇧F4 or ⌃⇧F4^ ⇧ F4, ⌃⇧F4 or ⌃⇧F4
Click this button to close the selected tab.
helpHelp

F1 or F1F1, F1 or F1F1, F1 or F1
Click this button to open the corresponding help page.

Stepping toolbar

ItemTooltip and ShortcutDescription
frames_show_execution_pointShow Execution Point

⌥F10 or ⌥F10⌥F10 or ⌥F10⌥F10 or ⌥F10⌥ NumPad *, ^ L, ⌥⌨ *, ⌃L, ⌥⌨ * or ⌃L⌥ F10, ⌥F10 or ⌥F10
Click this button to highlight the current execution point in the editor and show the corresponding stack frame in the Frames pane.
frames_step_overStep Over

F8 or F8F8 or F8F6 or F6F10, ⇧ F8, F10, ⇧F8, F10 or ⇧F8F8, F8 or F8
Click this button to execute the program until the next line in the current method or file, skipping the methods referenced at the current execution point (if any). If the current line is the last one in the method, execution steps to the line executed right after this method.
frames_step_intoStep Into

F7 or F7F7 or F7F5 or F5F11, F8, F11, F8, F11 or F8F7, F7 or F7
Click this button to have the debugger step into the method called at the current execution point.

If stepping into the called method is suppressed through the Stepping page of the Preferences dialog box (for example, if it is of a standard Java SDK class or a simple getter), the method will be skipped. Change the settings or use the Force Step Into command.

frames_force_step_intoForce Step Into

⌥⇧F7 or ⌥⇧F7⌥⇧F7 or ⌥⇧F7⌃⌘F5 or ⌃⌘F5⌥ F11, ⌥ F8, ⌥F11, ⌥F8, ⌥F11 or ⌥F8⇧ ⌥ F7, ⌥⇧F7 or ⌥⇧F7
Click this button to have the debugger step into the method called in the current execution point even if this method is to be skipped.
frames_step_outStep Out

⇧F8 or ⇧F8⇧F8 or ⇧F8F7 or F7⇧ F11, ^ ⇧ F8, ⇧F11, ⌃⇧F8, ⇧F11 or ⌃⇧F8⇧ F8, ⇧F8 or ⇧F8
Click this button to have the debugger step out of the current method, to the line executed right after it.
frames_drop_frameDrop frameInterrupts execution and returns to the initial point of method execution. In the process, it drops the current method frames from the stack.
frames_run_to_cursorRun to Cursor

⌥F9 or ⌥F9⌥F9 or ⌥F9⌘R or ⌘R^ F10, ^ F8, ⌃F10, ⌃F8, ⌃F10 or ⌃F8⌥ F9, ⌥F9 or ⌥F9
Click this button to resume program execution and pause until the execution point reaches the line at the current cursor location in the editor. No breakpoint is required. Actually, there is a temporary breakpoint set for the current line at the caret, which is removed once program execution is paused. Thus, if the caret is positioned at the line which has already been executed, the program will be just resumed for further execution, because there is no way to roll back to previous breakpoints. This action is especially useful when you have stepped deep into the methods sequence and need to step out of several methods at once.

If there are breakpoints set for the lines that should be executed before bringing you to the specified line, the debugger will pause at the first encountered breakpoint.

Use this action when you need a kind of a temporary breakpoint at a specific line, where program execution should not be interrupted.

variables_evaluate_exprEvaluate Expression

⌥F8 or ⌥F8⌥F8 or ⌥F8⌘U or ⌘U⌥ F8, ⌥F8 or ⌥F8⌥ F8, ⌥F8 or ⌥F8
Click this button to open the Evaluate Expression dialog.
Async
  • When this check box is selected, IntelliJ IDEA recognizes breakpoints inside asynchronous code and stops at them and lets you step into asynchronous 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. IntelliJ IDEA displays a full call stack, including the caller and the entire way to the beginning of the asynchronous actions.
  • When the check box is cleared, IntelliJ IDEA does not recognize and therefore skips breakpoints in the asynchronous code and does not allow you to step into it.
The image below shows an example of a JavaScript debugging session.

ws_debug_tool_window_async.png

  • With the Async check box selected, the debugger will stop at line3(breakpont), then at line5(breakpoint). On clicking Step into, the debugger will stop at line5 (on function), then will move to line6.
  • With the Async check box cleared, the debugger will stop at line3(breakpont), then at line5(breakpoint). On clicking Step into, the debugger will move to line9.

Hide/restore toolbar

IconTooltipDescription
debug_hideHideClick this button located in the upper-right corner of the Debug Console, Watches, Treads, Frames, or Variables pane to hide the corresponding area. When an area is hidden, its icon appears in upper-right corner of the Debugger.
show-consoleRestore 'Console' viewClick this button to make the Console area visible. This button becomes available after clicking debug_hide.
show-framesRestore 'Frames' viewClick this button to make the Frames area visible. This button becomes available after clicking debug_hide.
show-watchesRestore 'Watches' viewClick this button to make the Watches area visible. This button becomes available after clicking debug_hide.
show-threadsRestore 'Threads' viewClick this button to make the Threads area visible. This button becomes available after clicking debug_hide.
show-variablesRestore 'Variables' viewClick this button to make the Variables area visible. This button becomes available after clicking debug_hide.

Moving tabs and areas

If you are unhappy with the default layout of the Debug tool window, you can always move the tabs and areas. To to that, just drag a tab or an area to the desired location. The possible target gets highlighted:

ij_move_debug_tab

Drop the tab or area in the highlighted location.

To restore the default layout of tabs and area, click debug_layout in the Debug toolbar.

Context menu of a tab

Use the context menu of the Frames/Threads, Variables or Watches areas to configure the behavior of these areas or navigate between tabs.

ItemDescription
HideClick this button to hide the corresponding area
Close OthersClick this button to hide all tabs except for the Console and Debugger tabs.
Focus On StartupIf this option is selected, the selected area gets the focus when you start a debugging session.
Focus On BreakpointIf this option is selected, the selected area gets the focus when a breakpoint is reached.
Select Next Tab / Select Previous Tab

⌘], ⌥⌘→, Button5 Click, ⌘], ⌥⌘→ or Button5 Click⌥⌘→, Button5 Click, ⌥⌘→ or Button5 Click⌘], Button5 Click, ⌘] or Button5 Click^ ⌥ Right, Button5 Click, ⌃⌥→, Button5 Click, ⌃⌥→ or Button5 Click^ ⌥ Right, Button5 Click, ⌃⌥→, Button5 Click, ⌃⌥→ or Button5 Click / ⌘[, ⌥⌘←, Button4 Click, ⌘[, ⌥⌘← or Button4 Click⌥⌘←, Button4 Click, ⌥⌘← or Button4 Click⌘[, Button4 Click, ⌘[ or Button4 Click^ ⌥ Left, Button4 Click, ⌃⌥←, Button4 Click, ⌃⌥← or Button4 Click^ ⌥ Left, Button4 Click, ⌃⌥←, Button4 Click, ⌃⌥← or Button4 Click
Use these options to switch between the Console and the Debugger tabs.

See Also

Procedures:

Reference:

Getting Started: