xdebug не остановится в точке останова

Я потратил несколько часов, чтобы настроить свою среду IDE для отладки PHP с помощью eclipse и xdebug. Все в порядке, за исключением точки останова, которую я установил на eclipse. Если я дважды нажимаю на строку, чтобы добавить точку останова, отладчик не хочет останавливаться. Если добавить строку xdebug_break (), отладчик отлично остановится на строке …

Возможно, это проблема с конфигурацией. Может ли кто-нибудь мне помочь?

  • Eclipse: Eclipse PDT 2.2.0 Все в Windows 32 бита
  • Xdebug: 5.3 VC6 (32 бит)
  • PHP: PHP версия 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 

Если xdebug не останавливается в какой-либо части вашего кода, добавьте xdebug_break() в эту часть кода.

Кажется, есть несколько проблем, которые могут быть причиной этой проблемы. В моем случае это был тот факт, что я думал, что мне нужно установить какое-то отображение пути.

Настройки, найденные в
rightclick-project->properties->PHP Debug
а потом
server->edit->path mapping
были неправильными.

Я вручную добавил что-то, хотя я был прав, но Eclipse может все это сделать сам по себе. Удаление карты заставило ее работать.

У меня была аналогичная проблема с Eclipse PDT и Xdebug. Дело в том, что Eclipse слушал через IPv6, но Xdebug пытался подключиться через IPv4:

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

Xdebug , похоже, не поддерживает IPv6 .

После добавления строки

 -Djava.net.preferIPv4Stack=true 

после строки -vmargs в моем файле eclipse.ini , Eclipse начал прослушивать через IPv4:

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

Отладка теперь работает безупречно.

Я решил проблему.

На моем php.ini я добавил xdebug в качестве расширения вместо zend_extension.

php.ini

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

Примечание: путь должен быть полным путем вместо относительного пути.

Отладчик отлично работает. Вкусно!

У меня была та же проблема, PDT запустил сеанс отладки, даже разбив первую строку скрипта и разрешив отступы оттуда, но он с радостью пропустил бы любые ручные контрольные точки, которые я установил, если бы я нажал кнопку «Возобновить». После возиться с ним и читая кучу других ответов, я исправил это.

Я пытался настроить карту путей (в конфигурации сервера PHP), так как мои пути к проекту и пути к веб-серверу были разными, но по какой-то причине это не работало, поэтому я закончил добавление псевдонима в конфигурацию apache для соответствия местоположению PDT просил. Однако я не удалил эту настройку карты маршрута. Когда я удалил карту пути, точки останова начали работать!

Вероятно, симптом чего-то еще не работает (настройка карты пути), но точки останова и отладки все работают на меня сейчас 🙂

У меня такая же проблема. Решение состоит в том, чтобы открыть правильный файл и добавить в него контрольную точку.

Мой локальный сервер находится на моем виртуальном диске Z: (я использую denwer вместо WAMP). Z указывает на мою папку D: / webserver. Поэтому я могу открыть файл как 1) Z: /myproject/script.php и как 2) D: /webserver/myproject/script.php

По некоторым причинам отладчик останавливается на контрольных точках только в открытом файле Z: /myproject/script.php .

Как проверить мое решение ??? Сделайте следующее:

  1. Откройте любой php-файл, который вы хотите отлаживать.
  2. Добавьте xdebug_break() в любую строку и сохраните файл
  3. Запустить debug

В моем случае после того, как процесс отладки запущен, моя IDE phpDesigner открыла правильный файл в среде IDE и остановилась на строке xdebug_break (). Таким образом, в этом новом открытом файле вы можете добавить контрольные точки, и они будут работать. Используйте открытый файл для отладки.

Эта проблема появилась для меня после перемещения некоторых моих локальных папок проекта. Я мог бы заставить xdebugger сломаться в начале файла, но он пропустит остальные мои точки останова.

Если вы используете Netbeans, убедитесь, что ваш Project Url (Project Properties -> Run Configuration) указывает на правильное местоположение. Когда URL-адрес проекта указывает на правильную папку, точки останова начинают работать как ожидалось.

У меня была та же проблема в течение нескольких дней (!), Так как я понял, что проблема была самой тривиальной.

Конфигурация:

  • (Хост Windows 7)
  • Ubuntu 12.04 на машине VirtualBox
  • ЛАМПА установлена ​​вручную
  • 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 

Отладчик не остановился на контрольных точках и ни на xdebug_break();

… это было связано с установленными по умолчанию папками Apache DocumentRoot /var/www

Я изменил его на /home/user/Documents/www .

Быстрый ответ: удалите все пробелы на пути к вашему скрипту php.

Контекст:
Существует ошибка в плагине PDT версии 3.7.0, которая предотвращает остановку отладчика на контрольных точках.
И это происходит, когда путь к вашему скрипту содержит пробел!
Он исправлен, но я предполагаю, что целевая версия 4.0.0 еще не выпущена.
Комментарий, который сохранил мой день, – https://bugs.eclipse.org/bugs/show_bug.cgi?id=489646#c7 («Комментарий 7»).

Это раздражало меня около 3 часов, только что сработало. Поэтому, прежде чем положить оружие в голову, попробуйте это. Когда Eclipse запускается, выберите новое рабочее пространство и снова настройте свой проект!

После того, как я сделал это, мои брейк-очки снова попали! Мои точки разрыва работали нормально, а затем внезапно перестали работать. Я пытался:

  1. удаление всех точек останова

  2. проект очистки

  3. повторная установка eclipse

Ничего из вышеперечисленного не работало для меня!

BTW Я использую окно 7.

Надеюсь, эта информация спасет чью-то жизнь!

BTW: вот шаги, которые вы предпринимаете для настройки, centos 7 с xdebug и vmwere, с клиентом окна 7 с eclipse:

скачать vmwere

downlaod и настройка vmwere: CentOS-7-x86_64-Everything-1511.iso

отключить брандмауэр

systemctl отключить firewalld

systemctl stop firewalld

Статус systemctl firewalld

подключиться через ftp

ifconfig, чтобы узнать Ip

Ifconfig

eno16777736: flags = 4163 mtu 1500

inet 192.168.170.128 netmask 255.255.255.0 broadcast 192.168.170.255

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

эфир 00: 0c: 29: c4: b8: ca txqueuelen 1000 (Ethernet)

RX-пакеты 254 байта 20919 (20,4 KiB)

Ошибки RX 0 опустились 0 перерасходов 0 кадр 0

TX-пакеты 95 байтов 10225 (9,9 KiB)

Ошибки TX 0 опустились 0 перерасходов 0 несущих 0 столкновений 0

192.168.170.128 – это ip

настройка LAMP

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

yum -y install epel-release

yum -y установить mariadb-server mariadb

systemctl start mariadb.service

systemctl включить mariadb.service

mysql_secure_installation

yum -y установить httpd

systemctl запустить httpd.service

systemctl включить httpd.service

yum -y install php

перезагрузка службы httpd

yum -y install php-mysql

yum -y установить php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring

php-snmp php-soap curl curl-devel

перезагрузка службы httpd

yum install phpMyAdmin

на окнах открыть cmd, введите ipconfig

найти

Ethernet-адаптер Сетевой адаптер VMware 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 . 

в /etc/httpd/conf.d/phpMyAdmin.conf:

 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> 

перезагрузка службы httpd

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

перезагрузка службы httpd

/ etc / selinux / config change

Этот файл управляет состоянием SELinux в системе.

SELINUX = может принимать одно из этих трех значений:

принудительное исполнение – применяется политика безопасности SELinux.

permissive – SELinux печатает предупреждения вместо принудительного.

отключено – политика SELinux не загружена.

SELINUX = принуждени

SELINUXTYPE = может принимать одно из трех значений:

target – Целевые процессы защищены,

минимум – Модификация целевой политики. Защищены только выбранные процессы.

mls – Многоуровневая защита.

SELINUXTYPE = целевой

в

Этот файл управляет состоянием SELinux в системе.

SELINUX = может принимать одно из этих трех значений:

принудительное исполнение – применяется политика безопасности SELinux.

permissive – SELinux печатает предупреждения вместо принудительного.

отключено – политика SELinux не загружена.

SELINUX = отключено

SELINUXTYPE = может принимать одно из трех значений:

target – Целевые процессы защищены,

минимум – Модификация целевой политики. Защищены только выбранные процессы.

mls – Многоуровневая защита.

SELINUXTYPE = целевой

reboot centos

В WINDOWS POINT BROWSER TO: http://192.168.170.128/phpmyadmin , должно быть все хорошо

копировать веб-сайт в: / var / www / html / [ИМЯ ВЕБ-САЙТА]

chmod -R 777 html

в etc / httpd / add (это позволяет permalinks работать с именем сообщения)

Опции FollowSymLinks

AllowOverride All

Разрешить заказ, отрицать

Разрешить от всех

yum install php-devel (чтобы разрешить pipsize)

создайте файл php с помощью: и скопируйте его на веб-сайт root и скопируйте htl в https://xdebug.org/wizard.php, затем нажмите кнопку источника анализа

https://xdebug.org/wizard.php предоставит следующие инструкции: (следовать им)

…… Скачать xdebug-2.4.1.tgz

  • Распакуйте загруженный файл tar -xvzf xdebug-2.4.1.tgz

  • Выполнить: cd xdebug-2.4.1

  • Run: phpize (см. Часто задаваемые вопросы, если у вас нет phpize.

  • Выполнить: ./configure

  • Выполнить: make

  • Выполнить: cp modules / xdebug.so / usr / lib64 / php / modules

  • Измените /etc/php.ini и добавьте строки

  • 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

….. сервис httpd restart

и вы должны увидеть раздел XDebug, если так сервер готов к работе!

Загрузить Eclipse Neon

Файл> Открыть проекты из файловой системы

Закончить (и подождать)

Настройки окна> php> servers> new

  • Вкладка сервера

    • Имя сервера [что вам нравится]

    • Базовый URL [IP или имя вашего сервера]

    • Корень документа [Расположение на вашем жестком диске, где весь код, должен быть таким же, как и у вас на сервере]

    Вкладка «Отладчик»

    • Отладчик: Xdebug

    • порт: 9000

    Вкладка «Сопоставление карт» (нажмите «Добавить»)

    • Путь на сервере: [весь путь к вашему сайту] EG: / var / www / html / website

    • Путь в рабочей области [найти проект, который вы добавили: Открыть проекты из файловой системы]

перейти к главному окну eclipse> щелкнуть стрелку вниз рядом с значком ошибки> настройки отладки

  • Вкладка сервера

    • Файл: [это должен быть первый файл в вашем локальном проекте, который будет запущен при открытии приложения]

    • URL: отключить автоматическое создание: снимите флажок

      • Первое текстовое поле URL: [IP-адрес или имя вашего сервера, на котором запущен ваш веб-сайт]

      • Второе текстовое поле URL: [Если ваш сайт не находится в корневой директории, то там, где он находится)

  • Общая вкладка

    • Отображение в меню «Избранное»

      • Нажмите «Отладка» (флажок)

window> prespective> open prespective> php

Поместите точку прерывания в файл php, который сначала попадает (нажав на вертикальную полосу прокрутки на строке кода)

Наконец, нажмите значок отладки в eclipse, и ваша точка останова должна быть удалена (строка кода с точкой останова на ней будет зеленой)


Откройте Centos 7 на Vemware для мира


Изменение настройки сети VMeere на мост

Добавьте правило к маршрутизатору для переноса любого трафика на IP-адрес vmweare, который работает cetnos

Добавьте входящее правило в брандмауэр widnows, позволяющий http

PS: У меня нет времени, чтобы проверить мой молот и поговорить, справиться с этим

Если вы используете Eclipse, может быть, что отладчик, настроенный для определенного запуска (см. Вкладку Debugger), является Zend Debugger и NOT XDebug. Исправьте запуск отладки и повторите попытку. Это решило проблему для меня.

К сожалению, я не могу опубликовать снимок экрана. Однако в Eclipse вы можете перейти к: Конфигурация отладки> Веб-приложение PHP>, затем выберите ваш запуск> Вкладка «Отладчик»> выберите «Отладчик сервера», выберите «XDebug»> нажмите кнопку «Применить» и повторите попытку.

У меня была такая же проблема, и одна из двух исправила ее …

Я удалил дублирующее определение zend_extension в моем PHP.ini

или, скорее всего, я просто обновился до последней версии xdebug отсюда: http://xdebug.org/download.php

(Я запускал xdebug, который поставлялся с XAMPP v1.7.1)

ЭТО НАЧАЛОСЬ СНОВА … пробовал все разные версии dll xdebug и т. Д. … оказалось, что то, что заставило это не работать, было открыть окно Expressions … так что держите его закрытым, когда вы отлаживаете материал … вы можете временно добавьте часы, а затем закройте окно «Выражения», прежде чем «шаг» …

поддельный …

1- проверить конфигурацию xdebug на php.ini
2- eclipse-> project-> properties-> phpDebug-> Включить конкретную настройку проекта

phpDebugger-> configurattion-> port или widndow-> preference-> php-> debug-> installedDebuggers

3-widndow-> preference-> PHP->

Interpreter-> version executables-> путь к php-win.exe
point: для каждой debug lib (xdebug, zend_debugger, …) у вас может быть исполняемый файл php по умолчанию.

4 – ваш сервер приложений работает на разных портах с 80. widndow-> preference-> php-> PHP-серверы

Просто упомянуть простое решение для меня, когда мой недавно установленный и настроенный xdebug не работал с PhpStorm: я просто забыл перезапустить apache после обновления файла php.ini.

Я добавлю ту же проблему к выпуску Fedora 20 Heisenbug, php-ZendFramework2-Debug-2.3.9-1.fc20.noarch, php-pecl-xdebug-2.2.7-1.fc20.i686 и eclipse Version: Mars.1 Выпуск (4.5.1). Я использовал предыдущие ответы, обнаружил, что eclipse использует ipv6, я изменил, как описано в eclipse.ini для -Djava.net.preferIPv4Stack=true . То же самое для xdebug.ini и до сих пор не работает, пока я не обнаружил, что у меня есть 2 файла xdebug.ini, один в /etc/php-zts.d/ который является неправильным, и один в /etc/php.d/ который используется апачем. Я изменил его, включив следующую настройку

 ; 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= 

перезапустили перезагрузку сетевой сети sudo service network restart и теперь обнаружены точки останова, и я могу отлаживать, как ожидалось.