За последние 24 часа нас посетили 37335 программистов и 1721 робот. Сейчас ищут 646 программистов ...

Отладка кода, объясните чайнику

Тема в разделе "PHP для новичков", создана пользователем bogdan_titomir, 6 дек 2017.

  1. bogdan_titomir

    bogdan_titomir Новичок

    С нами с:
    7 окт 2017
    Сообщения:
    159
    Симпатии:
    2
    Нужно в функции узнать значения всех переменных как это сделать?

    Проект написан на одних функциях и через классы и массивы выводится вот в одной из этих функций у меня проблема как мне продебажить этот код?

    До этого пытался через netbeans и phpstorm ставить дебагинг не вышло много было проблем с настройкой xdebug на openserver и xampp. Они проблемные по дефолту и я понял что надо сервер собирать вручную и тогда отладка упростится но нет на это времени.

    Подскажите быстрый метод дебагинга в php. Заранее спасибо!
     
  2. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    +1. Я тоже так думаю что у вас проблема с терминологией.
    У php есть встроенный обработчик ошибок.
    Если он выключен на серваке то нужно врубить это вот так:
    Код (Text):
    1. PHP : Включить показ предупреждений и ошибок PHP
    2. Включение вывода всех ошибок и предупреждений в файле php.ini
    3. error_reporting = E_ALL
    4. display_errors = On
    5. display_startup_errors = On
    6. Включение вывода всех ошибок и предупреждений в файле .htaccess
    7. php_value display_errors 1
    8. php_value display_startup_errors 1
    9. php_value error_reporting E_ALL
    А чтобы его потом заюзать на проекте, надо в самое начало скрипта вставить следующее:
    PHP:
    1. ini_set('error_reporting', E_ALL);
    2. ini_set('display_errors', 1);
    3. ini_set('display_startup_errors', 1);
    --- Добавлено ---
    Создай для себя функцию вот такую:
    PHP:
    1. function xDebagLight($example) {
    2.     echo '<pre>';
    3.     var_dump($example);
    4.     echo '</pre>';
    5. }
    --- Добавлено ---
    И можешь проверять наличие каких - либо сущностей в своей переменной например :
    PHP:
    1. class nav {
    2.  
    3.    public $ex = 22;
    4.    public function __construct () {
    5.         $this->ex++;
    6.    }
    7.  
    8. }
    9. $b = new nav();
    10.   xDebagLight($b);
    11.    // И на экране увидим информацию об этом объекте
    12.    //или например массив
    13.     $arr = ['Ключик' => ['Чёрный', 'Белый', 'Жёлтый' ] ]
    --- Добавлено ---
    PHP:
    1. xDebagLight($arr);
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    А каких проблем? Ни разу не было большой задачей поднять xdebug на xampp. Open Server - не знаю, не пользовался. Сейчас у меня виртуальная машина
     
  4. bogdan_titomir

    bogdan_titomir Новичок

    С нами с:
    7 окт 2017
    Сообщения:
    159
    Симпатии:
    2
    Спасибо но это показ ошибок, разве это дебагинг? Нужен именно дебагинг.
     
  5. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Дебаг это отладка, тут два варианта либо ты отлаживаешь вручную.
    Либо ставишь xDebag . Скажу тебе так я им пользовался все пару раз и больше не пользуюсь. Мне хватает ручного дебага. Даже на больших объёмах кода.
     
  6. bogdan_titomir

    bogdan_titomir Новичок

    С нами с:
    7 окт 2017
    Сообщения:
    159
    Симпатии:
    2
    Мне че нравилось в Java Script можно было в любом куске кода прописать debuging и в консоле уже можно было сразу посмотреть что было в переменной до точки остановы. Есть что то подобное в php?
    --- Добавлено ---
    Буду курить var_dump тогда и думать как его пристроить.
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    xdebug. Не знаю, что там у тебя не получилось настроить, в два счёта настраиваешь, и смотришь все свои переменные http://prntscr.com/hjwfuo
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.816
    Симпатии:
    1.333
    Адрес:
    Лень
    не достаточно одной строки error_reporting ( E_ALL ); ?
     
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    bogdan_titomir нравится это.
  10. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Ну как бы другие два это для полного вывода на дисплей ошибок.
     
  11. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.816
    Симпатии:
    1.333
    Адрес:
    Лень
    могу ошибиться но помоему ласт фишка E_STRICT в пхп 7 перешла в E_ALL и теперь все ошибки полностью можно отобразить.

    В смысле полного ? error_reporting кусок торта ?
     
  12. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    я так пониманию error reporting это сказать пхп машине так теперь отсюда обрабатывай все ошибки. А дисплей еррор сказать выводи эти ошибки на экран, а дисплей стартап еррор говорит фиксировать ошибки при запуске скрипта которые не выводятся дисплей еррор
     
  13. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Лучше так:

    PHP:
    1. function xDebagLight($example) {
    2.     echo '<pre>';
    3.     var_dump($example);
    4.     echo '</pre>';
    5.     exit();
    6. }
     
  14. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.816
    Симпатии:
    1.333
    Адрес:
    Лень
    получишь вардамп верху и теги pre с пустым контентом + килл процесс
    --- Добавлено ---
    говно велосипедите