Xdebug для відлагодження PHP

php 8 трав. 2023 р.
 Xdebug для відлагодження PHP

Відлагодження коду є невід'ємною частиною розробки будь-якої програми. Якщо ви розробляєте веб-додаток на PHP, то Xdebug є потужним інструментом для відлагодження. У цій статті ми розглянемо, як використовувати Xdebug для відлагодження PHP коду.

Що таке Xdebug? Xdebug - це розширення для PHP, яке дозволяє відлагоджувати PHP код. Xdebug надає інструменти для профілювання коду, трасування викликів функцій, відстеження виключень та інші корисні функції.

Як встановити Xdebug? Перш за все, необхідно встановити Xdebug на свій сервер. Якщо ви використовуєте сервер Apache, то встановіть розширення за допомогою менеджера пакетів. Якщо ви використовуєте інший веб-сервер, то скористайтеся інструкціями для свого сервера.

Як використовувати Xdebug для відлагодження коду? Після встановлення Xdebug вам необхідно змінити конфігураційний файл PHP (php.ini), щоб дозволити Xdebug виконувати відлагодження. Додайте наступні рядки в кінець файлу php.ini:

[xdebug]
zend_extension="/path/to/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_autostart=1

/path/to/xdebug.so - це шлях до файлу розширення Xdebug.

Після збереження змін до файлу php.ini перезапустіть веб-сервер, щоб зміни набули чинності.

Тепер, коли Xdebug налаштовано, ви можете використовувати різні інструменти для відлагодження PHP коду, такі як:

  1. Відстеження викликів функцій Xdebug дозволяє відстежувати послідовність викликів функцій в коді. Для цього використовуйте функцію xdebug_call_function().

  2. Трасування виключень Xdebug дозволяє відлагоджування після виникнення виключення. Для цього використовуйте функцію xdebug_print_exception().
    Приклад:

    function foo($a, $b) {
      if ($a < 0 || $b < 0) {
        throw new Exception('Параметри повинні бути не менше 0!');
      }
      $c = $a + $b;
      return $c;
    }
    
    try {
      $my_result = foo(-1, 4); // викликаємо функцію foo() з невірними параметрами
    } catch (Exception $e) {
      xdebug_print_exception($e); // виводимо інформацію про виключення
    }
    

    У результаті виконання цього коду буде виведено інформацію про виключення, яке виникло в функції foo() через невірні параметри.

  1. Відстеження змінних Xdebug дозволяє відстежувати значення змінних в коді. Для цього використовуйте функцію xdebug_var_dump().
    Приклад: 

    function foo($a, $b) {
      $c = $a + $b;
      xdebug_var_dump($c); // виводимо значення змінної $c
      return $c;
    }
    
    $my_result = foo(2, 4); // викликаємо функцію foo()
    

    У результаті виконання цього коду буде виведено значення змінної $c, яке дорівнює 6.

  2. Відстеження виконання коду Xdebug дозволяє відстежувати виконання коду рядок за рядком. Для цього використовуйте функцію xdebug_start_trace() та xdebug_stop_trace().

    function foo($a, $b) {
      $c = $a + $b;
      return $c;
    }
    
    function bar($x, $y) {
      $z = $x * $y;
      $result = foo($x, $z);
      return $result;
    }
    
    xdebug_start_trace('my_trace'); // починаємо відстежування
    $my_result = bar(2, 4); // викликаємо функцію bar()
    xdebug_stop_trace(); // закінчуємо відстежування
    
    // результат записується у файл з ім'ям my_trace.xt
    
  3. Відстеження запитів до бази даних Xdebug дозволяє відстежувати запити до бази даних, що виконуються в коді. Для цього використовуйте функцію xdebug_start_trace() та змінну xdebug.trace_options.

  4. Відстеження використання пам'яті: Xdebug має функцію, яка дозволяє відстежувати використання пам'яті під час виконання скрипту.
    Наприклад:

    function foo() {
      $my_array = array();
      for ($i = 0; $i < 10000; $i++) {
        $my_array[] = $i;
      }
      xdebug_memory_usage(); // виводимо інформацію про використання пам'яті
      return $my_array;
    }
    
    $my_result = foo(); // викликаємо функцію foo()
    

    У результаті виконання цього коду буде виведена інформація про використання пам'яті, яку займає змінна $my_array.

  5. Профілювання коду: Xdebug може також бути використаний для профілювання PHP скриптів. Це дозволяє виявити проблеми з продуктивністю та знайти місця у коді, де можна оптимізувати виконання. Наприклад:
    function foo() {
      for ($i = 0; $i < 10000; $i++) {
        $my_array[] = $i;
      }
      return $my_array;
    }
    
    xdebug_start_profiling(); // починаємо профілювання
    $my_result = foo(); // викликаємо функцію foo()
    xdebug_stop_profiling(); // закінчуємо профілювання
    
    // результат записується у файл з ім'ям cachegrind.out.<pid>
    

    У результаті виконання цього коду буде згенеровано файл з ім'ям cachegrind.out.<pid>, де <pid> - це ідентифікатор процесу. Цей файл міститиме інформацію про час виконання кожної функції, кількість викликів кожної функції, а також інформацію про використання пам'яті.

Наприклад, щоб відстежувати запити до бази даних, необхідно додати наступний рядок до файлу php.ini:

xdebug.trace_options=1

Інші можливості Xdebug Xdebug має багато інших корисних функцій, таких як:

  • Профілювання коду: Xdebug дозволяє відстежувати час виконання різних частин коду та видавати звіти про продуктивність.
  • Відлагодження коду у реальному часі: Xdebug дозволяє відлагоджувати код у реальному часі, що дозволяє знаходити та виправляти помилки швидше.
  • Відлагодження коду з використанням IDE: Xdebug дозволяє використовувати різні IDE для відлагодження коду, такі як PhpStorm, NetBeans, VS Code та інші.

Ці приклади не охоплюють всі можливості Xdebug, але демонструють корисність цього інструменту для відлагодження PHP коду.

В даній статті ми розглянули, як використовувати Xdebug для відлагодження PHP скриптів. Xdebug дозволяє відстежувати виконання коду, виводити інформацію про значення змінних, відстежувати використання пам'яті та профілювати код. Крім того, Xdebug може бути інтегрований з різними IDE та використовуватися для відлагодження віддаленого коду та скриптів, які виконуються в браузері. Використання Xdebug значно спрощує процес відлагодження PHP скриптів та дозволяє знайти та виправити помилки у коді.