Debug in the Just-In-Time mode
PhpStorm supports the use of Xdebug in the Just-In-Time (JIT) mode so it is not attached to your code all the time but connects to PhpStorm only when an error occurs or an exception is thrown. Depending on the Xdebug version used, this operation mode is toggled through the following settings:
Xdebug 2 uses the xdebug .remote_mode setting, which has to be set to
jit
.Xdebug 3 uses the xdebug.start_upon_error setting, which has to be set to
yes
.
The mode is available both for debugging command-line scripts and for web server debugging.
Configure Xdebug for using in the Just-In-Time mode
Depending on whether you are going to debug command-line scripts or use a Web server, use one of the scenarios below.
Command-line scripts
For debugging command-line scripts, specify the custom -dxdebug.remote_mode=jit
(for Xdebug 2) or -dxdebug.start_upon_error=yes
(for Xdebug 3) directive as an additional configuration option:
In the Settings dialog (Ctrl+Alt+S) , go to .
From the PHP executable list, choose the relevant PHP interpreter and click next to it.
In the CLI Interpreters dialog that opens, click next to the Configuration options field in the Additional area.
In the Configuration options dialog that opens, click to add a new entry.
Type
xdebug.start_upon_error
in the Configuration directive field andyes
in the Value field.Type
xdebug.remote_mode
in the Configuration directive field andjit
in the Value field.When you click OK, you return to the CLI Interpreters dialog where the Configuration options field shows
-dxdebug.remote_mode=jit
(for Xdebug 2) or-dxdebug .start_upon_error=yes
(for Xdebug 3).
Web server debugging
In the main menu, go to
.In the Validate Remote Environment that opens, choose the Web server to validate the debugger on.
Choose Local Web Server or Shared Folder to check the debugger associated with a local web server. PhpStorm creates a validation script, deploys it to the target environment, and runs it there.
Path to create validation script
In this field, specify the absolute path to the folder under the server document root where the validation script will be created. For web servers of the Inplace type, the folder is under the project root.
The folder must be accessible through http.
URL to validation script
In this field, type the URL address of the folder where the validation script will be created. If the project root is mapped to a folder accessible through http, you can specify the project root or any other folder under it.
Choose Remote Web Server to check the debugger associated with a remote server. PhpStorm creates a validation script, deploys it to the target remote environment, and runs it there.
Path to create validation script
In this field, specify the absolute path to the folder under the server document root where the validation script will be created. The folder must be accessible through http.
Deployment server
In this field, specify the server access configuration of the type Local Server or Remote Server to access the target environment. For more information, refer to Configure synchronization with a server.
Choose a configuration from the list or click Browse in the Deployment dialog.
Click Validate to have PhpStorm create a validation script, deploy it to the target remote environment, and run it there.
Open the php.ini file which is reported as loaded and associated with Xdebug.
In the php.ini file, find the
[xdebug]
section.Change the value of the
xdebug.start_upon_error
from the defaultdefault
toyes
.Change the value of the
xdebug.remote_mode
from the defaultreq
tojit
.
Debugging session
Set the breakpoints and launch a debugging session, as described in Initiating a Debugging Session or Debug with a PHP web page debug configuration.
Xdebug connects to PhpStorm in the following two cases:
When an error occurs. In this case, Xdebug stops on the line right after the error condition. The reason for that is that PhpStorm first has to run the erroneous code before it knows something is wrong.
When an exception is thrown. If the exception is handled, Xdebug breaks at the first line of the
catch
block if there is one, or at thefinally
block.