Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Последние сообщения
Ответить
1

Дебага

Obmer

  • Свой человек
  • Юзер
  • 129
  • Репутация:5 
  • Предупреждения: 0 
  • Регистрация:
    1 Июн 2010
#1
Вопрос на засыпку кодерам профессионалам по поводу дебага. Был в Майкрассофт базарил с Билл Гейцом он не в курсах он не шарит в серверных языках по этому пишу на Фапосе. Хочу знать разные примочки для выявления ошибок либо проверок на передачу значений. Чтоб не плавить мозг и не трусить вольфрам, говорю про методы дебага. Просто я увлекался в детстве радиоэлектроникой и у меня есть куча примочек для проверки и прозвонке разных цепей блоков и модулей, а также для проверке отдельных элементов и их сборок виде интегральных микросхем. Хочу узнать есть что-то подобное в аналогий пхп. к примеру вот var_dump - дамп информации о переменной.

Отредактировано автором 31 Мая 2011
Бывает настолько сложно, что проще некуда

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#2
для дебага есть пара простых правил и все. Дальше уже полет твоей фантазии.

Правило дебага 1
В самом начале своего скрипта, в самом начеле его работы ставим строки
 1 
 2 
<?php error_reporting(E_ALL);
display_errors(1);?>

Правило дебага 2
Для с ужения места поиска ошибки или другой ситуации, в которой вам надо узнать значение переменной или константы, пользуйтесь специальными функциями. Например var_dump() если работать через браузер, выводит очень непонятные данные. Точнее они в сложном для восприятия виде. Для того, что бы вывод стал красивым и читабельным, заключите var_dump() в теги <pre>
 1 
 2 
 3 
<?php echo '<pre>';
var_dump($var);
echo 
'</pre>';?>


Правило дебага 3
Создайте свои собственные инструменты, для ускорения работы. Например, если взять второй пункт этого списка, то мы увидим как лучше юзать var_dump(), но это не удобно. Да и к тому же много писать. А если сделать так
 1 
 2 
 3 
 4 
 5 
<?php function pr($data) { 
    global 
$options;
    if (
$options['display_errors']) 
      echo 
'<pre>' print_r($datatrue) . '</pre>'
}
?>

Эта функция не только выводит данные в удобном виде, но вызывается за секунду, так как надо написать всего несколько символов. Так же она может отключаться и включаться. Например, когда вы закончили дебаг, у вас по всем скриптам осталось немеряно вызовов функции и искать их лень. Вы просто задаете нужную опцию и все...Вызов этой функции уже ничего не делает.


Ну как-то так)

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#3
Obmer, а еще можно воспользоваться нормальными средствами для разработки. В качестве примера можно привести NetBeans, для работы которого достаточно установить модуль XDebug 2.0 или выше. Дальнейшая работа будет аналогична стандартному дебагингу на языках высокого уровня (C++, Java, Delphi и т.п.), но чуть медленнее.
Подробности про возможности последней версии NetBeans - читать.
Подробности про процесс отладки в NetBeans - читать.

Отредактировано автором 1 Июн 2011

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#4
Да, можно воспользоваться советом Wasja, но мне например, удобнее в нотепаде++. Привычка))

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#5
 1 
 2 
<?php error_reporting(E_ALL E_NOTICE);?>

лучше использовать, так не будет проблем с отображением ошибок соответствующих версиям пыхи. Особенно заметно в 5.1. А работа, сданная клиенту лучше: error_reporting(E_PARSE);

Отредактировано автором 13 Июн 2011

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#6
skad0, при отладке лучше использовать

 1 
 2 
<?php error_reporting(E_ALL);?>

Надо учиться писать без ошибок)

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)
1
Сейчас online: 158. Зарегистрированных: 0. Гостей: 158.