Отладка интерпретатора PHP с помощью GDB - PullRequest
2 голосов
/ 11 апреля 2010

Я бы хотел использовать GDB для перехода через код C ++, который составляет расширение Apache php.so. Я хочу посмотреть, что делает PHP, пока работает приложение PHP. Предпочтительно я бы использовал IDE, например Netbeans или Eclipse, в системе LAMP.

Ответы [ 2 ]

6 голосов
/ 11 апреля 2010
  1. Вы хотите получить отладочную сборку mod_php (с символами) или построить свою собственную (configure --enable-debug)
  2. Вы должны настроить свой Apache так, чтобы он всегда поддерживал ровно один экземпляр рабочего процесса (который будет экземпляром, который вы отлаживаете), то есть установите MinSpareServers, MaxSpareServers и StartServers все на 1. Также убедитесь, что все параметры тайм-аута установлены щедро
  3. Используйте gdb или любой графический интерфейс для gdb (например, ddd или Eclipse CDT ) для подключить к одному-единственному рабочему процессу Apache. Вставьте точку останова в один из источников PHP и т. Д. И продолжайте.
  4. Направьте свой браузер на свой веб-сервер и получите доступ к странице PHP. Ваша точка останова сработает. Если вы хотите разбудить отладчик в определенный момент выполнения скрипта PHP, сгенерируйте SIGTRAP из PHP, и gdb обычно вас обяжет.

Веселись!

0 голосов
/ 11 апреля 2010

Может быть, вы могли бы сделать это на Windows.

Тем не менее, вам лучше всего сделать это на Unix-сервере. Вам нужно будет скомпилировать все с включенной отладкой. GDB понадобится доступ к этим каталогам для источника.

Тогда вам нужно будет запустить apache, а затем запустить процесс.

Чтобы дать себе время присоединиться, пока вы запускаете PHP / Apache с помощью браузера, добавьте в скрипт PHP вызов режима ожидания. Если вы ps, вы увидите процесс в состоянии сна. Или вы можете просто записать свой идентификатор процесса в файл в tmp, прежде чем он перейдет в режим сна.

...