PhpStorm 2018.1 Help

Debugging

This section describes the procedures that are common for various types of applications. and PHP Frameworks and External Tools.

PhpStorm provides a full range of facilities for debugging your source code:

  • Breakpoints in PHP.
  • Breakpoints in HTML and JavaScript.
  • Multiple simultaneous debugging sessions.
  • Customizable breakpoint properties: conditions, pass count, etc.
  • Frames, variables, and watches views in the debugger UI.
  • Runtime evaluation of expressions.
  • Support for Xdebug and Zend Debugger.

General debugging steps

  1. Decide which debugging engine you would like to use: Xdebug or Zend Debugger. On choosing the engine, install and configure it as described in Configuring the debugger engine.
  2. To debug CoffeeScript, TypeScript, and Dart code, you need to generate a source map for it. This will set the correspondence between lines in your original code and in the generated JavaScript code. If no source map is generated, your breakpoints will not be recognized and processed correctly.
  3. Depending on your debugging mode, define a run/debug configuration.
  4. Create breakpoints in the source code.
  5. Launch a debugging session as described in PHP Debugging Session.
  6. Pause or resume the debugging session as required.
  7. During the debugger session, step through the breakpoints, evaluate expressions, change values on-the-fly examine suspended program, and set watches.

After you've started a debug session, the debug icon that marks the Debug tool window toggles to debug active to indicate that the debug process is active.

If you want to see the list of all currently debugging applications, select Run | Show Running List from the main menu. Refer to the Viewing Running Processes section for details.

Debug

After you have configured a run configuration for your project, you can launch it in debug mode by pressing Shift+F9.

In the Debug tool window you can see the list of frames and threads with their states, variables and watches. When you select a frame, you see the variables corresponding to the selected frame.

Useful debugger shortcuts

Breakpoints

Breakpoint details and condition

If you want to change details of a breakpoint, press Ctrl+Shift+F8. Here you can specify the breakpoint conditions.

breakpointProperties

If you have any instance marked with a label, you can use it in the condition expression as well:

breakpointProperties label

To see all breakpoints in the project (with more advanced settings), press the same shortcut Ctrl+Shift+F8 again.

Action breakpoints

Another action might be useful if you want to evaluate something at a particular line of code without actually making a stop. You can do that by using the Action breakpoint. To create one, just click on the gutter while holding Shift.

action breakpoint

Temporary breakpoints

To create a breakpoint that stops only once, click the left gutter while holding Shift+Alt.

temporary breakpoint

Refer to the section Using Breakpoints for details.

Disable breakpoints

It's also useful to know that any breakpoint can be quickly disabled by clicking on the gutter while holding Alt.

quick disable breakpoints

Refer to the section Enabling, Disabling and Removing Breakpoints for details.

Debugger session

Drop frame

In case you want to “go back in time” while debugging you can do it via Drop Frame action. This is a great help if you mistakenly stepped too far. This will not revert the global state of your application but at least will get you back by stack of frames.

drop frame

The icon frames drop frame is described in the Debug tool window reference.

Run to cursor

Sometimes you need to resume the program and stop at another line of code, without adding another breakpoint. Easy: just press Alt+F9.

run to cursor

The icon frames run to cursor is described in the toolbar reference of the Debug tool window.

Mark instance

If you want a particular instance to be always recognized while debugging, you can mark it with a colored label via F11 or the context menu in the Variables and Watches tabs.

mark object

The next time this instance appears in Watches, Variables or Evaluate expression, you will see the label:

mark object1

Evaluate expression

While in debug mode, you can evaluate any expression by pressing Alt+F8.

evaluate expression1

This tool provides code completion just as in the editor so it’s very easy to enter any expression:

evaluate expression2

If you have any instances marked with labels, code completion will offer you its names so you can evaluate them:

evaluate expression3

Refer to the section Evaluating Expressions for details.

Settings

If you want to change the default debugger settings, choose Debugger in PhpStorm Settings/Preferences.

Last modified: 20 April 2018

See Also