Отладка интерпретатора PHP с помощью GDB

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


person rook    schedule 11.04.2010    source источник


Ответы (2)


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

Развлекайся!

person vladr    schedule 11.04.2010

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

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

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

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

person drudru    schedule 11.04.2010