PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Tuesday, January 4, 2022

[FIXED] PHP debugging in visual studio code only works sometimes

 January 04, 2022     lamp, php, visual-studio-code, xdebug     No comments   

Issue

My php-debugging with xdebug in visual studio only works sometimes. Some of the times i just get a normal browser page load (error log below).

Edit: At first i thought it was due to the location of the file, but I noticed it could happen in any location; either xdebug finds an error in the code without stopping at my own breakpoints; or it can find all types of breakpoints OR find nothing at all... Now I'm thinking it has to do with refreshing, modifying and resaving the file as well as what types of errors are in the file. I'll get back to this if I can find out what causes it.

In my current setup I have my localhost webroot at /home/user/Git/www/projects which is where 127.0.0.1 points to. However, I've also set up multiple virtual hosts that reside in their respective subfolders: /home/user/Git/www/projects/project_name.


Some things I already looked at

In this thread: Visual Studio Code - Xdebug won't work - They suggest setting xdebug.remote_connect_back = 1, which doesn't solve the problem. They also suggest setting localSourceRoot in launch.json to point to server root. However, simply adding "localSourceRoot": "http://127.0.0.1" or something like "localSourceRoot": "http://127.0.0.1/project_name" did not work.


Logs

/etc/hosts

127.0.0.1   project_names
127.0.0.1   php
127.0.0.1   localhost 
::1         localhost

php.ini:

[Xdebug] 
zend_extension = xdebug.so
xdebug.remote_enable = on
xdebug.remote_autostart = on
xdebug.remote_handler = dbgp
xdebug.remote_host = 127.0.0.1
xdebug.remote_port = 9000
xdebug.remote_mode = req
xdebug.idekey=php-vs
;xdebug.remote_connect_back = 1

launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "log": true,
            "request": "launch",
            "port": 9000
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

VS Debug Console:

<- launchResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 2,
  command: 'launch',
  success: true }

new connection 1
<- threadEvent
ThreadEvent {
  seq: 0,
  type: 'event',
  event: 'thread',
  body: { reason: 'started', threadId: 1 } }

<- initializedEvent
InitializedEvent { seq: 0, type: 'event', event: 'initialized' }

-> threadsRequest
{ command: 'threads', type: 'request', seq: 3 }

<- threadsResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 3,
  command: 'threads',
  success: true,
  body: { threads: [ Thread { id: 1, name: 'Request 1 (9:06:23 PM)' } ] } }

-> setBreakpointsRequest
{ command: 'setBreakpoints',
  arguments: 
   { source: 
      { path: '/home/micke/Git/www/projects/php/trial.php',
        name: 'trial.php' },
     lines: [ 14 ],
     breakpoints: [ { line: 14 } ],
     sourceModified: false },
  type: 'request',
  seq: 4 }

<- setBreakpointsResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 4,
  command: 'setBreakpoints',
  success: true,
  body: { breakpoints: [ { verified: true, line: 14 } ] } }

-> setFunctionBreakpointsRequest
{ command: 'setFunctionBreakpoints',
  arguments: { breakpoints: [] },
  type: 'request',
  seq: 5 }

<- setFunctionBreakpointsResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 5,
  command: 'setFunctionBreakpoints',
  success: true,
  body: { breakpoints: [] } }

-> setExceptionBreakpointsRequest
{ command: 'setExceptionBreakpoints',
  arguments: { filters: [ '*' ] },
  type: 'request',
  seq: 6 }

<- setExceptionBreakpointsResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 6,
  command: 'setExceptionBreakpoints',
  success: true }

-> configurationDoneRequest
{ command: 'configurationDone', type: 'request', seq: 7 }

-> threadsRequest
{ command: 'threads', type: 'request', seq: 8 }

<- threadsResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 8,
  command: 'threads',
  success: true,
  body: { threads: [ Thread { id: 1, name: 'Request 1 (9:06:23 PM)' } ] } }

<- configurationDoneResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 7,
  command: 'configurationDone',
  success: true }

<- threadEvent
ThreadEvent {
  seq: 0,
  type: 'event',
  event: 'thread',
  body: { reason: 'exited', threadId: 1 } }

Solution

I finally realized that the problem was related to mountpoints. The project in VScode was opened on the path where the webserver was mounted; not where it was originally pointing to in apache. So the breakpoints were considered added to another file as the path was not the same.



Answered By - Cutgah
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing