Overview
KB
Technical FAQ
PHP Manual
CSS2 Manual
HTML Manual
JS Guide
JS Reference
PhpDock Manual
Nu-Coder Manual
PhpExpress Manual
PHP Joomla
Development
Learn PHP
 
<Setup remote debuggingPhp debugger install errors>
Last updated: Sat, 30 Dec 2023

Breakpoints in PHP Debugger

Using Breakpoints in PhpED is quite straightforward:
  • You can set the Breakpoints in the source opened in PHP Editor
  • To edit Breakpoints properties, go to View->Debugger Window->Breakpoints.
  • View->Debugger Window->Breakpoints is also used to set Global Breakpoint

However sometimes we get the questions about Breakpoints and PHP Debugger. These are FAQ about Breakpoints. Before going any further we strongly recommend to run Project Setting Wizard in your Project - it helps resolve the Breakpoint issues in most cases.

Why do my Breakpoints not work?

You set a breakpoint, but PHP Debugger doesn't stop at it. What could be wrong? Below are the most common causes:

  • The issue that we came across quite a few times: breakpoints are set in the editor, but the script is started in the Run mode instead of Debug -- meaning debugger did not trigger and was not aware of any breakpoints. It's clear that breakpoints work only when scripts are running with debugger
  • Also, very common issue: breakpoints are set on non-executable lines. PHP interpreter processes the source and generates stop-points for certain lines of PHP code. These lines have a blue dot next to them in the editor. Sometimes counter-intuitive but true that some lines of your PHP code will not have these blue dots next to them, even though you might think they should. For example: if/ and if/else, statements without the curly braces won't have the blue dots except perhaps for the if itself. Another potential "gottcha" for breakpoints is switch($variable) statements - switch will not have a blue dot next to it. However, switch($myclass->mymethod()) or switch(myfunc()) or even switch($var1=$var2) will have. Seems it's because there is an executable code inside the condition part. This is a feature of PHP itself, whereas PhpED and its Php debugger just follow what the PHP dictates.
  • Another issue: breakpoints are set in the file that is neither executed nor even included in the other php scripts being executed. It's clear that such breakpoints won't trigger.
  • Similar to the above but a bit trickier: Breakpoints are in the file, that is executed after current http request finished. It may for example be executed by Ajax call.
    NOTE: if you have Debug session checked in Run menu, debugger will continue capturing scripts and initiate debugging. But if this option is off, all scripts executed after debugged script finished, will not trigger debugger and corresponding breakpoints will have no effect.
  • Last but not the least case relates to mapping. In this case debugger may not find file on the remote host coresponded to the source file on local disk where breakpoint is set. So breakpoint remains unresolved and debugger opens [Unmapped file] from the server instead of local copy when you step into it. This situation and solutions are explained in this article

What are the best practices for using Breakpoints in PhpED?

  • Set your breakpoints at the statements with blue dots. This way you will be sure that PHP has generated stop-point and breakpoint will trigger. If blue dots aren't yet shown, you can start debugging and proceed with step-in/step-over/step-out reach tp the file where you want to set the breakpoints. When you reach the code in the file, blue dots will appear immediately.
  • Sometimes it is easier to start debugging by using NuSphere Debugger Toolbar. You can open web site in an external browser, navigate to the target page and click Debug button on the toolbar.

Troubleshooting of Breakpoints

If you are sure that the file with breakpoints is being executed but the breakpoints are still not working, chances are your file is being executed in the request different from your original debugger request and debug session is turned off. Firstly - turn on the debug session and check again. Other thing to watch for once the debug session is turned on:

  • Check that the request to the file is on the same URL as the debugger request, with the same hostname and the same protocol. Switching from http to https will break the debug session! You can learn about debugging multiple domains here: https://nusphere.com/kb/technicalfaq/howto_run_dbg.htm
  • Next - check that the cookies are enabled. Without the cookies debug session doesn't work.
  • Check that you can debug up to the file where you set the breakpoint. If debugger opens file with [Unmapped remote file] indication in the tab, read this article and follow suggestions.



<Setup remote debuggingPhp debugger install errors>
Last updated: Sat, 30 Dec 2023