Подтвердить что ты не робот

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

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

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

  • Eclipse: Eclipse PDT 2.2.0 All In Ones 32-битные Windows
  • 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
4b9b3361

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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

[email protected]:~$ netstat -an | grep 9000
tcp6       0      0 :::9000                 :::*                    LISTEN

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

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

-Djava.net.preferIPv4Stack=true

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

[email protected]:~$ netstat -an | grep 9000
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN

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

Ответ 4

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

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

php.ini

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

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

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

Ответ 5

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

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

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

Ответ 6

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

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

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

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

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

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

Ответ 7

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

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

Ответ 8

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

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

  • (хост Windows 7)
  • Ubuntu 12.04 на машине VirtualBox
  • LAMP установлен вручную
  • 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.

Ответ 9

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

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

Ответ 10

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

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

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

  • проект очистки

  • установка eclipse

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

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

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

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

скачать vmwere

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

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

systemctl отключить firewalld

systemctl stop firewalld

systemctl status 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 restart

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

yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring

php-snmp php-soap curl curl-devel

служба httpd restart

yum install phpMyAdmin

в окне open 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 restart

изменить $cfg ['Servers'] [$ i] ['auth_type'] = 'cookie'; до $cfg ['Servers'] [$ i] ['auth_type'] = 'http';

служба httpd restart

/etc/selinux/config change

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

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

Обеспечение соблюдения - применяется политика безопасности SELinux.

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

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

SELINUX = исполнение

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

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

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

mls - защита от нескольких уровней безопасности.

SELINUXTYPE = target

к

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

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

Обеспечение соблюдения - применяется политика безопасности SELinux.

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

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

SELINUX = отключено

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

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

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

mls - защита от нескольких уровней безопасности.

SELINUXTYPE = target

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

Разрешить заказ, deny

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

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

  • Запуск: 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 = О

  • xdebug.remote_host = 192.168.170.1

  • xdebug.remote_port = 9000

  • xdebug.remote_handler = DBGp

..... service httpd restart

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

Загрузить Eclipse Neon

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

Завершить (и подождать)

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

  • вкладка "Сервер"

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

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

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

    Вкладка "Отладчик"

    • Отладчик: Xdebug

    • порт: 9000

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

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

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

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

  • вкладка "Сервер"

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

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

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

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

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

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

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

окно > предполагаемое > открытое представление > php

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

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


Откройте Centos 7 на Vemware в мире


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

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

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

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

Ответ 11

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

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

Ответ 12

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

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

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

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

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

bogus...

Ответ 13

1- проверить конфигурацию xdebug на php.ini

2- eclipse- > project- > properties- > phpDebug- > Включить конкретную настройку проекта

phpDebugger- > configurattion- > порт или widndow- > preference- > PHP- > debug- > installedDebuggers

3-widndow- > preference- > PHP →

Interpreter- > версия executables- > путь к php-win.exe

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

4 - ваш сервер приложений работает на другом порту с 80. widndow- > preference- > PHP- > Серверы PHP

Ответ 14

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

Ответ 15

Я добавлю ту же проблему к выпуску Fedora 20 Heisenbug, php-ZendFramework2-Debug-2.3.9-1.fc20.noarch, php-pecl-xdebug-2.2.7-1.fc20.i686 и eclipse Версия: Выпуск 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/, который используется для apache. Я изменил его, включив следующую настройку

; 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, и теперь обнаружены точки останова, и я могу отлаживать, как ожидалось.

Ответ 16

Я тоже исправил это. Использование zend_extension вместо расширения.

zend_extension_ts="C:\xampp\php\ext\php_xdebug.dll"