xdebug не остановится на точке останова - PullRequest
23 голосов
/ 26 октября 2010

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

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

  • Eclipse: Eclipse PDT 2.2.0 All In Ones 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

Ответы [ 19 ]

18 голосов
/ 13 мая 2012

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

12 голосов
/ 31 октября 2012

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

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

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

10 голосов
/ 07 апреля 2013

У меня была похожая проблема с 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

Отладка теперь работает без ошибок.

7 голосов
/ 26 октября 2010

Я исправил проблему.

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

php.ini

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

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

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

3 голосов
/ 17 февраля 2012

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

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

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

2 голосов
/ 18 апреля 2012

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

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

2 голосов
/ 04 сентября 2012

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

Мой локальный сервер находится на моем виртуальном диске 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. Выполнить отладку

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

1 голос
/ 29 октября 2016

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

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

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

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

  3. повторная установка затмения

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

Кстати, я использую окно 7.

Надеюсь, эта информация спасет чью-то жизнь!* Кстати: вот шаги, которые вы предпринимаете для установки, centos 7 с xdebug и vmwere, с клиентом window 7 с eclipse:

, загрузка vmwere

, загрузка и настройка vmwere с: CentOS-7-x86_64-Everything-1511.iso

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

systemctl отключить firewalld

systemctl остановить firewalld

systemctl status firewalld

connectчерез ftp

ifconfig для определения Ip

ifconfig

eno16777736: flags = 4163 mtu 1500

inet 192.168.170.128 маска сети 255.255.255.0 трансляция 192.168.170.255

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

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

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

RX-ошибок 0 отброшено 0 переполнений 0 кадр 0

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

Ошибки TX 0 отброшены 0 переполнений 0 несущих 0 коллизий 0

192.168.170.128 - это настройка ip

LAMP

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

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

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

systemctl start mariadb.service

systemctl enable mariadb.service

mysql_secure_installation

yum -y install httpd

systemctl start httpd.service

systemctl enable httpd.service

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

service httpd restart

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

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

php-snmp php-мыло curl curl-devel

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

ням установить phpMyAdmin

в Windows откройте cmd, введите ipconfig

find

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>

service httpd restart

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

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

/ etc / selinux / config change

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

SELINUX = может принимать одно из следующих трех значений:

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

разрешающее - SELinuxвыводит предупреждения вместо принудительного применения.

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

SELINUX = принудительное применение

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

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

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

mls - многоуровневая защита.

SELINUXTYPE = таргет

до

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

SELINUX = может принимать одно из следующих трех значений:

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

разрешающий - SELinux печатает предупреждения вместо принудительного.

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

SELINUX = отключено

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

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

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

mls - многоуровневая защита.

SELINUXTYPE = таргетинг

перезагрузка сенто

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

скопировать сайт по адресу: / var / www / html / [ИМЯ САЙТА]

chmod -R 777 html

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

Опции FollowSymLinks

AllowOverride All

Заказ разрешить, отказать

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

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

создайте файл php с помощью: и скопируйте в корневой каталог сайта, запустите его и скопируйте 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 (См. FAQ, если у вас нет phpize.

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

  • Выполнить: сделать

  • Выполнить: 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

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

Скачать Eclipse Neon

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

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

Настройки окна> php> серверы> новый

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

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

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

    • Document Root [Место на жестком диске, где находится весь код, должно быть таким же, как у вас на сервере]

    Вкладка отладчика

    • Отладчик: Xdebug

    • порт: 9000

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

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

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

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

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

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

    • URL: отключить автоматическую генерацию: снимите флажок

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

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

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

    • Показать в избранном меню

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

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

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

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


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


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

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

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

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

1 голос
/ 01 мая 2016

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

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

1 голос
/ 06 сентября 2012

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

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

  • (Windows7 Host)
  • Ubuntu 12.04 на VirtualBox Machine
  • 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();

... itбыло связано с разрешениями по умолчанию для папки Apache DocumentRoot /var/www

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

...