web-dev-qa-db-fra.com

xdebug ne s'arrête pas au point d'arrêt

Je passe quelques heures à configurer mon IDE pour déboguer PHP avec Eclipse et xdebug .. Tout va bien à l'exception du point d'arrêt que j'ai défini sur Eclipse. Si je double-clique sur une ligne pour ajouter un point d'arrêt, le débogueur souhaite que pas s'arrête .. Si vous ajoutez la ligne xdebug_break (), le débogueur s'arrête bien sur la ligne ...

C'est peut-être un problème de configuration. Quelqu'un pourrait-il m'aider?

  • Eclipse: Eclipse PDT 2.2.0 All In Windows 32 bits 
  • Xdebug: 5.3 VC6 (32 bits) 
  • PHP: PHP Version 5.3.3

PHP.ini

[xdebug]
xdebug.remote_enable=1
xdebug.remote_Host=localhost
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
xdebug.remote_mode=req
xdebug.profiler_enable = 1
xdebug.profiler_output_dir = "c:/temp"
xdebug.collect_params = 4
xdebug.collect_return = on
xdebug.collect_vars = on

xdebug.show_local_vars = 1
21
RedPaladin

Si xdebug ne vous arrêtez pas dans une partie de votre code, ajoutez xdebug_break() à cette partie du code.

16
Freeman

Plusieurs problèmes semblent être à l'origine de ce problème. Dans mon cas, c’est le fait que j’ai pensé que j’avais besoin de définir un mappage de chemin.

Les paramètres trouvés sous
rightclick-project->properties->PHP Debug
et alors
server->edit->path mapping
avaient tort.

J'avais manuellement ajouté quelque chose qui me semblait correct, mais Eclipse peut le faire tout seul. En supprimant le mappage, cela a fonctionné.

12
Nanne

J'ai eu un problème similaire avec Eclipse PDT et Xdebug. La cause était qu'Eclipse écoutait via IPv6 mais Xdebug a tenté de se connecter via IPv4:

chriki@machine:~$ netstat -an | grep 9000
tcp6       0      0 :::9000                 :::*                    LISTEN

Xdebug ne semble pas prendre en charge IPv6 , pour le moment.

Après avoir ajouté la ligne

-Djava.net.preferIPv4Stack=true

après la ligne -vmargs dans mon fichier Eclipse.ini, Eclipse a commencé à écouter via IPv4:

chriki@machine:~$ netstat -an | grep 9000
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN

Le débogage fonctionne maintenant parfaitement.

10
Chriki

Je me suis résolu le problème.

Sur mon php.ini, j'ai ajouté le xdebug en tant qu'extension au lieu d'un zend_extension.

php.ini

zend_extension=C:\EasyPHP-5.3.3\php\ext\php_xdebug.dll

Remarque: le chemin doit être le chemin complet au lieu d'un chemin relatif.

Le débogueur fonctionne très bien. Délicieux!

7
RedPaladin

J'avais le même problème, PDT allait démarrer la session de débogage, même en se brisant sur la première ligne du script et en autorisant la marche à partir de là, mais il serait heureux de passer en revue tous les points d'arrêt manuels définis si j'avais cliqué sur Reprendre. Après avoir bidouillé avec elle et lu un tas d'autres réponses, je l'ai corrigée.

J'avais essayé de configurer une carte de chemins (dans la configuration du serveur PHP) car mon chemin de projet et celui du serveur Web étaient différents, mais cela ne fonctionnait pas pour une raison quelconque. J'ai donc fini par ajouter un alias au Apache config pour correspondre à l'emplacement PDT demandait. Cependant, je n'avais pas supprimé ce paramètre de carte de chemin. Lorsque j'ai supprimé la carte de chemin, les points d'arrêt ont commencé à fonctionner!

Probablement un symptôme de quelque chose d'autre qui ne fonctionne pas correctement (le paramètre de mappage de chemin), mais les points d'arrêt et le débogage fonctionnent tous pour moi maintenant :)

3
r00pert

J'ai eu le même problème. La solution consiste à ouvrir le fichier correct et à y ajouter un point d'arrêt.

Mon serveur local est sur mon lecteur virtuel Z: (j'utilise denwer au lieu de WAMP). Le lecteur Z pointe vers mon dossier D:/webserver. Je peux donc ouvrir mon fichier en tant que 1) Z: /monprojet/script.php et en tant que 2) D: /webserver/myproject/script.php  

Pour certaines raisons, le débogueur s’arrête sur les points d’arrêt uniquement dans le fichier Z ouvert: /myproject/script.php file.

Comment tester ma solution ??? Faire ensuite:

  1. Ouvrez n'importe quel fichier php que vous voulez déboguer
  2. Ajoutez xdebug_break() à n'importe quelle ligne et sauvegardez le fichier
  3. Exécuter le débogage

Dans mon cas, après que le processus de débogage ait commencé, mon phpDesigner IDE ouvre le fichier correct dans IDE et s'arrête à la ligne xdebug_break (). Donc, dans ce nouveau fichier ouvert, vous pouvez ajouter des points d'arrêt et ils fonctionneront. Utilisez le fichier ouvert pour le débogage.

2
Jekis

Ce problème est apparu après avoir déplacé certains de mes dossiers de projet locaux. Xdebugger pouvait se casser au début du fichier, mais le reste de mes points d'arrêt serait ignoré. 

Si vous utilisez Netbeans, vérifiez que votre URL de projet (Propriétés du projet -> Exécuter la configuration) pointe vers le bon emplacement. Lorsque l'URL du projet pointe vers le bon dossier, les points d'arrêt commencent à fonctionner comme prévu.

2
Kevin

Cela me fait chier depuis environ 3 heures, ça vient de s'arranger. Alors, avant de vous lancer une arme à la tête, essayez ceci. Lorsque Eclipse démarre, choisissez un nouvel espace de travail et configurez votre projet à nouveau! 

Après avoir fait cela, mes points d'arrêt ont encore été touchés! Mes points d'arrêt fonctionnaient bien, puis tout d'un coup, ils ont cessé de fonctionner. J'ai essayé:

  1. supprimer tous les points de rupture 

  2. projet de nettoyage

  3. réinstaller Eclipse

Aucune de ce qui précède n'a fonctionné pour moi!

BTW j'utilise la fenêtre 7.

J'espère que cette information sauve la vie de quelqu'un!

BTW: voici les étapes à suivre pour installer centos 7 avec xdebug et vmwere, avec un client Windows 7 avec Eclipse:

télécharger vmwere

téléchargez et installez vmwere avec: CentOS-7-x86_64-Everything-1511.iso

désactiver le pare-feu

systemctl désactiver pare-feu

systemctl stop firewalld

statut de systemctl

se connecter via ftp

ifconfig pour savoir Ip

ifconfig

eno16777736: drapeaux = 4163 mtu 1500

masque de réseau inet 192.168.170.128 255.255.255.0 diffusé 192.168.170.255

inet6 fe80 :: 20c: 29ff: fec4: b8ca prefixlen 64 scopeid 0x20

éther 00: 0c: 29: c4: b8: ca txqueuelen 1000 (Ethernet)

Paquets RX 254 octets 20919 (20.4 Ko)

Erreurs RX 0 abandonné 0 dépassements 0 image 0

Paquets TX 95 octets 10225 (9.9 Ko)

Erreurs TX 0 omis 0 dépassements 0 transporteur 0 collisions 0

192.168.170.128 est l'ip

configuration lampe

rpm --import/etc/pki/rpm-gpg/RPM-GPG-KEY *

miam-y installer epel-release

miam-y installer mariadb-server mariadb

systemctl start mariadb.service

systemctl activer mariadb.service

mysql_secure_installation

miam-y installer httpd

systemctl start httpd.service

systemctl activer httpd.service

miam-y installer php

service httpd restart

miam-y installer php-mysql

miam-y installer php-Gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring

php-snmp php-soap curl curl-devel

service httpd restart

yum installe phpMyAdmin

sur les fenêtres ouvertes cmd, tapez ipconfig

trouver

Adaptateur Ethernet VMware Network Adapter VMnet8:

Connection-specific DNS Suffix  . : localdomain

Link-local IPv6 Address . . . . . : fe80::94b8:9e5c:c772:3d47%19

IPv4 Address. . . . . . . . . . . : 192.168.170.1 [ this is the widnows ip to allow ]

Subnet Mask . . . . . . . . . . . : 255.255.255.0

Default Gateway .

dans /etc/httpd/conf.d/phpMyAdmin.conf, changez:

AddDefaultCharset UTF-8

<IfModule mod_authz_core.c>

  # Apache 2.4

  <RequireAny>

    Require ip 127.0.0.1

    Require ip ::1

  </RequireAny>

</IfModule>

<IfModule !mod_authz_core.c>

  # Apache 2.2

  Order Deny,Allow

  Deny from All

  Allow from 127.0.0.1

  Allow from ::1

</IfModule>

à:

AddDefaultCharset UTF-8

<IfModule mod_authz_core.c>

  # Apache 2.4

  <RequireAny>

    Require ip 127.0.0.1

    Require ip ::1

  </RequireAny>

</IfModule>

<IfModule !mod_authz_core.c>

  # Apache 2.2

  Order Deny,Allow

  Deny from All

  Allow from 127.0.0.1

  Allow from ::1

</IfModule>

<IfModule mod_authz_core.c>

  # Apache 2.4

  <RequireAny>

    Require ip [ WINDOWS IP TO ALLOW GOES HERE ]

    Require ip ::1

  </RequireAny>

</IfModule>

<IfModule !mod_authz_core.c>

  # Apache 2.2

  Order Deny,Allow

  Deny from All

  Allow from [ WINDOWS IP TO ALLOW GOES HERE ]

  Allow from ::1

</IfModule>

service httpd restart

change $ cfg ['Servers'] [$ i] ['auth_type'] = 'cookie'; to $ cfg ['Servers'] [$ i] ['auth_type'] = 'http';

service httpd restart

/ etc/selinux/config change

Ce fichier contrôle l'état de SELinux sur le système.

SELINUX = peut prendre l'une de ces trois valeurs:

faire respecter - la politique de sécurité de SELinux est appliquée.

permissive - SELinux imprime des avertissements au lieu de les forcer.

disabled - Aucune règle SELinux n'est chargée.

SELINUX = application

SELINUXTYPE = peut prendre l'une des deux valeurs suivantes:

ciblé - les processus ciblés sont protégés,

minimum - Modification de la politique ciblée. Seuls les processus sélectionnés sont protégés par . 

mls - Protection à plusieurs niveaux de sécurité.

SELINUXTYPE = ciblé 

à

Ce fichier contrôle l'état de SELinux sur le système.

SELINUX = peut prendre l'une de ces trois valeurs:

faire respecter - la politique de sécurité de SELinux est appliquée.

permissive - SELinux imprime des avertissements au lieu de les forcer.

disabled - Aucune règle SELinux n'est chargée.

SELINUX = désactivé 

SELINUXTYPE = peut prendre l'une des deux valeurs suivantes:

ciblé - les processus ciblés sont protégés,

minimum - Modification de la politique ciblée. Seuls les processus sélectionnés sont protégés par . 

mls - Protection à plusieurs niveaux de sécurité.

SELINUXTYPE = ciblé 

redémarrer les centos

DANS WINDOWS POINT NAVIGATEUR À: http://192.168.170.128/phpmyadmin , devrait être tout bon

copier le site Web à:/var/www/html/[NOM DU SITE WEB]

chmod -R 777 html

dans etc/httpd/add (cela permet aux permaliens de travailler avec le nom du post)

Options FollowSymLinks

AllowOverride All

Ordre permettre, refuser

Autoriser de tous

miam installer php-devel (pour autoriser pipsize)

faire un fichier php avec: et copier à la racine du site web le lancer et copier le HTML dans https://xdebug.org/wizard.php puis cliquer sur le bouton de source d'analyse

https://xdebug.org/wizard.php donnera des instructions comme celle-ci: (suivez-les)

...... Télécharger xdebug-2.4.1.tgz

  • Décompressez le fichier téléchargé avec tar -xvzf xdebug-2.4.1.tgz

  • Exécuter: cd xdebug-2.4.1

  • Exécuter: phpize (voir la FAQ si vous n'avez pas phpize.

  • Exécuter: ./configure

  • Run: make

  • Exécuter: cp modules/xdebug.so/usr/lib64/php/modules

  • Éditez /etc/php.ini et ajoutez les lignes

  • zend_extension = /usr/lib64/php/modules/xdebug.so

  • xdebug.remote_enable = On

  • xdebug.remote_Host = 192.168.170.1

  • xdebug.remote_port = 9000

  • xdebug.remote_handler = dbgp

..... service httpd restart

lancez le fichier et vous devriez voir une section XDebug, si le serveur est prêt à fonctionner!

Télécharger Eclipse Neon

Fichier> Ouvrir des projets à partir du système de fichiers

Terminer (et attendre)

Préférences de la fenêtre> php> serveurs> nouveau

  • Onglet Serveur 

    • Nom du serveur [tout ce que vous aimez]

    • URL de base [IP ou nom de votre serveur]

    • Document Root [l'emplacement sur votre disque dur où tout le code est, doit être identique à ce que vous avez sur le serveur]

    Onglet Débogueur 

    • Debugger: Xdebug

    • port: 9000

    Onglet Mappage de serveur (cliquez sur Ajouter)

    • Chemin sur le serveur: [le chemin complet de votre site Web] EG:/var/www/html/website

    • Chemin dans l'espace de travail [recherchez le projet que vous avez ajouté avec: Ouvrir des projets à partir du système de fichiers]

allez à la fenêtre principale d'Eclipse> cliquez sur la flèche déroulante en regard de l'icône de bug> déboguer les configerations

  • Onglet Serveur

    • Fichier: [Ce devrait être le premier fichier de votre projet local à être exécuté. À l'ouverture de l'application]

    • URL: désactiver la génération automatique: décocher la case

      • Première zone de texte de l'URL: [L'adresse IP ou le nom de votre serveur sur lequel votre site Web est en cours d'exécution]

      • Deuxième zone de texte de l'URL: [Si votre site Web ne se trouve pas dans le répertoire racine, le répertoire où il se trouve se trouve ici]

  • Onglet commun

    • Afficher dans le menu Favoris

      • Cliquez sur Debug (case à cocher) 

fenêtre> préspective> ouverte préspective> php

Mettez un point de rupture dans le fichier php qui est frappé en premier (en cliquant sur la barre de défilement verticale sur une ligne de code)

Enfin, cliquez sur l'icône de débogage dans Eclipse, et votre point d'arrêt devrait être touché (la ligne de code avec le point d'arrêt dessus deviendra verte)


Ouvrez Centos 7 sur Vemware au monde entier


Changer le paramètre réseau de VMeere en ponté

Ajouter une règle au routeur pour le transfert de tout trafic vers l'adresse IP de vmweare sur laquelle cetnos est exécuté

Ajouter une règle entrante au pare-feu de Windows permettant à http

PS: Je n'ai pas le temps de vérifier mon joueur et mes expériences 

1

Réponse rapide: supprimez tous les espaces sur le chemin de votre script php.

Le contexte:
Il existe un bogue sur la version 3.7.0 du plug-in PDT qui empêche le débogueur de s’arrêter aux points d’arrêt.
Et cela se produit lorsque le chemin de votre script contient un espace!
Cela a été corrigé mais je suppose que la version cible, 4.0.0, n’a pas encore été publiée.
Le commentaire qui a sauvé ma journée est à https://bugs.Eclipse.org/bugs/show_bug.cgi?id=489646#c7 ("Commentaire 7").

1
Fernando Terra

J'ai eu le même problème pendant des jours (!) Depuis que je me suis rendu compte que le problème était le plus trivial.

Configuration:

  • (Hôte Windows 7) 
  • Ubuntu 12.04 sur la machine VirtualBox 
  • LAMPE installée manuellement 
  • Eclipse Indigo + PDT
  • php5-xdebug

/etc/php5/Apache2/php.ini

[XDebug]
zend_extension="/usr/lib/php5/20090626+lfs/xdebug.so"
xdebug.remote_enable=true
xdebug.remote_Host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.profiler_output_dir=/tmp

Le débogueur ne s’est pas arrêté aux points d’arrêt ni à xdebug_break();

... cela était dû aux autorisations /var/www du dossier Apache DocumentRoot par défaut} _

Je l'ai changé en /home/user/Documents/www.

1
Davide

J'avais le même problème avec Eclipse-php-oxygen Le problème repose sur Eclipse. J'ai installé Eclipse-php-luna-SR2-win32 et testé xdebug et tout fonctionne correctement.

Installé: Xampp-win32-7.0.30-0-VC14-installer.exe Java 8 Mise à jour 171

Voici mes paramètres sur php.ini:

[XDebug]
zend_extension = C:\xampp\php\ext\php_xdebug-2.6.0-7.0-vc14.dll
;zend_extension = C:\xampp\php\ext\php_xdebug-2.5.5-7.0-vc14.dll
;zend_extension = "c:\xampp\php\ext\php_xdebug-2.6.0-7.2-vc15.dll"
xdebug.remote_autostart = 1
xdebug.profiler_append = 0
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "c:\xampp\tmp"
;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_Host = "127.0.0.1"
xdebug.remote_log = "c:\xampp\tmp\xdebug.txt"
xdebug.remote_port = 9000
xdebug.trace_output_dir = "c:\xampp\tmp"
;36000 = 10h
xdebug.remote_cookie_expire_time = 36000

J'espère que cela aidera.

Br, ALi

0
abh

Si vous utilisez Eclipse, il se peut que le débogueur configuré pour un lancement spécifique (voir l’onglet Débogueur) soit le débogueur Zend, et PAS XDebug. Corrigez votre lancement de débogage et réessayez. Cela a résolu le problème pour moi.

Malheureusement, je ne peux pas poster la capture d'écran. Toutefois, dans Eclipse, vous pouvez accéder à: Configurations de débogage> PHP Application Web>, puis sélectionnez votre lancement> Onglet Débogueur> utilisez la liste déroulante Débogueur de serveur pour sélectionner XDebug> appuyez sur le bouton Appliquer. et réessayez.

0
George

J'ai eu le même problème et l'une des deux choses résolues ... 

J'ai supprimé une définition de zend_extension en double dans mon fichier PHP.ini

ou plus probablement, je viens de mettre à niveau vers la dernière version de xdebug à partir d’ici: http://xdebug.org/download.php

(J'utilisais xdebug fourni avec XAMPP v1.7.1)

CECI A COMMENCÉ ENCORE ... essayé toutes les différentes versions de dll xdebug, etc ... s’est avéré que ce qui ne fonctionnait pas, c’était de laisser la fenêtre Expressions ouverte ... alors gardez-la fermée lorsque vous déboguez des choses ... vous pouvez ajoutez une veille temporairement, puis fermez la fenêtre Expressions avant de "passer" ... 

faux... 

0
Patrick Steil

Pour ne mentionner que la solution simple pour moi, lorsque mon xdebug nouvellement installé et configuré ne fonctionnait pas avec PhpStorm: j'ai simplement oublié de redémarrer Apache après la mise à jour du fichier php.ini.

0
Michael

Je suis sur Windows, Eclipse Oxygen. Après avoir passé pas mal de temps, j'ai découvert que la simple suppression et la reconstitution de Debug Configuration aidaient.

0
MartinM

J'ajoute le même problème sur la version 20 de Fedora: Heisenbug, php-ZendFramework2-Debug-2.3.9-1.fc20.noarch, php-pecl-xdebug-2.2.7-1.fc20.i686 et la version Eclipse: Mars.1 Libération (4.5.1). J'ai utilisé les réponses précédentes, découvert qu'Eclipse utilisait ipv6, que j'ai modifié comme décrit dans Eclipse.ini pour -Djava.net.preferIPv4Stack=true. Idem pour xdebug.ini, et ne fonctionne toujours pas, jusqu'à ce que j'ai découvert que j'avais 2 fichiers xdebug.ini, un dans /etc/php-zts.d/ qui est le mauvais et un dans /etc/php.d/ qui est celui utilisé par Apache. Je l'ai modifié pour inclure le paramètre suivant

; Enable xdebug extension module
zend_extension=xdebug.so

xdebug.remote_enable=on
xdebug.remote_Host="127.0.0.1"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
xdebug.remote_mode=req
xdebug.remote_autostart=1
xdebug.idekey=

redémarré le réseau Sudo service network restart et maintenant les points d'arrêt sont détectés et je peux déboguer comme prévu.

0
Pierre_C

Pour moi, le problème semblait php 7.2 avec Xdebug v2.7.0beta2-dev, notez la partie beta . Cela a été installé en utilisant puphpet.com. J'ai essayé php 7.1 et le problème a disparu. Cela m'a pris des heures pour trouver ça!

0
roelleor

1- Vérifiez la configuration de xdebug sur php.ini
2- Eclipse-> projet-> propriétés-> phpDebug -> Activer le paramètre spécifique au projet

phpDebugger-> configurattion-> port ou widndow-> préférence-> php-> debug-> installedDebuggers

3-widndow-> préférence-> php->

Interprète-> version Exécutables-> chemin d'accès à php-win.exe
point: pour chaque bibliothèque de débogage (xdebug, zend_debugger, ...), vous pouvez avoir un exécutable php par défaut.

4-votre serveur d'applications fonctionne sur un port différent avec 80. Widndow-> préférence-> php -> Serveurs PHP

0
Amin Arab

J'ai aussi corrigé cela. Utiliser zend_extension au lieu de l'extension.

zend_extension_ts="C:\xampp\php\ext\php_xdebug.dll"
0
Thiện Trần