Skip to main content
Blog eCommerce

Debugging code with Xdebug and PhpStorm

Kalimuthu Lakshmanan
October 16, 2019 |

Why do we need Xdebug?

In the development process, we have several existing codes with a number of functionalities. We don’t have to create that functionality from the core every time.  We can rather use the existing code and make simple modifications that will save our time and energy. Product development processes work the same. Before modifying the existing code, we need to know how they work and which codes have which functionality.

Now you may have the question, can we see how the PHP code works? It is a virtual object, right?

Absolutely! You can see the flow of the PHP code, and there is a tool. It is called Xdebug. Here we can see how to configure the Xdebug with PhpStorm IDE.

Install Xdebug on Ubuntu using following cmd:

sudo apt-get install php-xdebug

Once you have installed the Xdebug into your system, restart your apache2 server and enable error tracing using the below cmd.

sudo service apache2 restart
vi /etc/php/7.0/mods-available/xdebug.ini
xdebug.show_error_trace = 1

You have successfully installed Xdebug into your system!Now, we need to configure Xdebug with PhpStorm.Step 2: Install Xdebug helper extension in the Chrome browser to receive the details from the browser to PhpStorm.Xdebug helper - Chrome BrowserStep 3: In PhpStorm Settings/Preferences dialog (Ctrl+Alt+S), select Languages & Frameworks | PHP.Languages & Frameworks - PHPStep 4: Check the Xdebug installation associated with the selected PHP interpreter:

    1. On the PHP page, choose the relevant PHP installation from the CLI Interpreter list and click ” .. “ next to the field. The list shows all the PHP installations available in PhpStorm.
    2. The CLI Interpreters dialog that opens shows the following:
      • The version of the selected PHP installation.
      • The name and version of the debugging engine associated with the selected PHP installation (Xdebug or Zend Debugger).

CLI InterpretersStep 5: Define the Xdebug behaviour. Click Debug under the PHP node. On the Debug page that opens, specify the following settings in the Xdebug area:

    1. In the Debug Port field, appoint the port through which the tool will communicate with PhpStorm.
      This must be exactly the same port number as specified in the php.ini file:
      xdebug.remote_port = port_number>
      By default, Xdebug listens on port 9000.
    2. To have PhpStorm accept any incoming connections from Xdebug engines through the port specified in the Debug port field, select the Can accept external connections checkbox.
    3. Select the Force break at the first line when no path mapping is specified.
    4. Select the Force break at the first line when the script is outside the project.
      Don’t miss saving these options.

Step 6: Now, you are ready to use Xdebug with PhpStorm. Add breakpoints where you need to debug using click on corresponding code.Xdebug & PhpStorm - BreakpointStep 7: Then click Run > Stop Listening For PHP Debug Connections option. Please make sure it is in the green color.

Step 8: Open the Chrome Browser where you can see the green bug in the right corner of the Chrome browser, then click and choose Debug option. Now, your browser is ready to send the details to PhpStorm.Bug optionStep 9: Now, you should load the page where you must execute the breakpoints, which has been mentioned in Step 6 in PhpStorm. After some time, the PhpStorm will show the variable values which you must select as the breakpoint. Then, press F7 to bring up the flow on how the final output should be displayed.

This debugging of code using Xdebug and PhpStorm can be beneficial for your development in the debug process, thus helping you save the amount of time spent searching on Google.

Kalimuthu Lakshmanan

Kalimuthu, a Software Engineer with around two years of experience in Magento and Laravel platforms is passionate about coding. He abides with the quote "Stay Hungry Stay Foolish". He loves playing volleyball and video games whenever he gets some free time.

More posts by Kalimuthu Lakshmanan