Заголовок сообщения: debagger for php Добавлено: 9 Июнь 2003, 23:05:19
Добрый день.
Недавно возникла проблема найти дебаггер для php. Остановился я на нескольких вещах.
PHPEd - Редактор и отладчик.
DBG Php Debugger - это конкретно дебаггер.
есть еще Advanced PHP Debugger, но он тока под линукс, а мне именно надо под Win32. И насколько я понял, то DBG Php Debugger встраивается тока в некоторые программы, а я программиную в UltraEdit, а вот его в списках нет.… Подскажите пожалуста свое мнение, кто с чем работал, и вообще есть еще дебаггеры.
весчь архи удобная и архи важная... вод представь ситуацию, скрипт в определенном место проверяет равенство переменных, но что-то не работает... как ты проверяешь значение переменной перед проверкой?? echo $value … я тоже так делаю... А дебагером поставил остановку в этом месте и посмотрел значение... оч удобно. Возможно в маленьких скриптах лучше написать echo, но когда у тебя большой проект, и ты никак не поймешь где ошибка... вот тут-то и нужен дебагер .. Ну в самом деле, не будешь же ты echo 20 раз писать??
Возможно в маленьких скриптах лучше написать echo, но когда у тебя большой проект, и ты никак не поймешь где ошибка... вот тут-то и нужен дебагер .. Ну в самом деле, не будешь же ты echo 20 раз писать??
Нормальные люди пользуются в больших проектах не echo или, тем более, дебаггером, а логгерами. Дебаггер -- сугубо для скромных проектов.
17 Сообщения: 4362 Зарегистрирован: 25.04.01 Откуда: Москва
Добавлено: 10 Июнь 2003, 11:13:24
я бы еще вспомнил про модульность построения правильного проекта. т.е. в каждый конкретный момент пишется определенный модуль, он отлаживается, вылавливаются баги. таким образом получается работоспособный проект. и очень большой, и совсем маленький.
_________________ Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
Нормальные люди пользуются в больших проектах не echo или, тем более, дебаггером, а логгерами. Дебаггер -- сугубо для скромных проектов.
я вынужден не согласиться с Вами. Допустим надо задать условие, и если true, то выполняется добавление в базу mysql таблицы. А если проверка выполняется ошибочно? Значит надо проверить переменные которые пришли к проверке. А пока Вы вытащите нужную информацию из логгера придется каждый раз удалять таблицу... И это самый просто вариант.
Long писал(а):
я бы еще вспомнил про модульность построения правильного проекта. т.е. в каждый конкретный момент пишется определенный модуль, он отлаживается, вылавливаются баги. таким образом получается работоспособный проект. и очень большой, и совсем маленький.
Никто не спорит, модульность помогает. Но я например сначала пишу весь модуль, а только потом его отлаживаю. А допустим надо переписать какой-то кусок или поменять какую-то функцию? То получается заново надо отлаживать? Так может уйти уйма времени. Поэтому я отлаживаю в самом конце. А с дебагерром просто удобно, поставил брейкпойнт, посмотрел что да как и решаешь, продолжать скрипт или нет.
Но это мое сугубо личное мнение. И я просто хотел узнать что лучше использовать
А если проверка выполняется ошибочно? Значит надо проверить переменные которые пришли к проверке. А пока Вы вытащите нужную информацию из логгера придется каждый раз удалять таблицу...
Чушь. Я вытащу эту информацию с первого раза.
1. Видим, что программа сработала неверно.
2. Поднимаем логи и находим ошибку.
3. Исправляем ошибку.
NEfriT_U238, это всего лишь говорит о не правильной организации процесса. и прежде всего - процесса проектирования системы.
возможно... а Вы сможете сказать, что Ваша система организации правильная? Если Вы скажите что она правильна и совершенна, то я уверен что найдется очень много людей, которые смогут с Вами поспорить. У меня не очень много опыта в програмированни на php, начинал я с delphi, но тот как я пишу код мне нравится. Я не говорю что он идеален, в нем еще очень много надо дорабатывать, но во всяком случае я придерживаюсь своих правил, и я смогу поспорить о них и о их правильности.
Crazy писал(а):
Чушь. Я вытащу эту информацию с первого раза. 1. Видим, что программа сработала неверно. 2. Поднимаем логи и находим ошибку. 3. Исправляем ошибку.
возможно я еще просто не понимаю сути логгера, но на мой взгляд, лучше не напрягаясь пройти опасный участок дебаггером и посмотреть, что какая переменная принемает, чем ковыряться в логах, искать то что нужно. Дебаггер, на мой взгляд, выгоден и по времени и по возможностям.
Возня с пошаговым дебаггером имеет следующие очевидные минусы:
1. Требуется заранее локализовать нужный участок кода -- не более сотни строк. В противном случае процесс становится неуправляемым.
2. Обнаружив неверное значение переменной или неверный переход мы уже не можем выяснить, почему это случилось -- backtrace весьма не распространенная фича.
3. Работа под пошаговым дебаггером дает совершенно другие временные характеристики работы скрипта, что может маскировать ошибки.
Соответственно, проще не напрягаясь просмотреть опасное место в логе, при необходимости отмотав назад, чтобы посмотреть, как мы дошли до этой ошибки.
_________________ We've got the big memory and the small memory. The small memory's to remember the small things and the big memory's to forget the big ones.
9 Сообщения: 2719 Зарегистрирован: 18.04.02 Откуда: Hell of a Place
Добавлено: 10 Июнь 2003, 19:51:02
Crazy я не знаю, что там с деббагерами для php, потому что мне ни разу не понадобился дебаггер для php, но в вижуалке есть callstack (это к пунктам 1 и 2).
_________________ Original Demon - distributed world wide since 546 BC
Просто факт: сейчас большую часть рабочего времени я провожу в WebSphere Application Developer'е. Пошаговый отладчик в нем есть в полный рост. При этом 90% ошибок я нахожу логгером.
_________________ We've got the big memory and the small memory. The small memory's to remember the small things and the big memory's to forget the big ones.
попытаюсь опровергнуть минусы изложенные Crazy(заранее скажу, что все тестировалось в программе phpED v3.1.2)
1)почему не больше 100? Что вы имеете ввиду под выражение "процесс становится неуправляемым"? В любой момент можно сделать что угодно... и количество строк роли не играет никакой. В качестве теста был прогнан через дебагер новостной движок EasyNews_ru version: 4.1. Он состоит из 5-ти отдельных модулей, чистого кода в которых 1023 строки, это не считая конфигурационных скриптов, в которых находится служебная информация. Общее время затраченное на просмотр всех строк 24 минуты. После выполнения скрипт был выведен в броузер. Поверьте, никакх проблем не возникло. После выполнения я получил подробную информацию о всех отправленный GET переменных, а так же все значения всех переменных, как локальных, так и глобальных. Причем эта информация доступна во время отладки, тоесть можно в любой момент посмотреть какая переменная что значит. Плюс еще маленькая, но приятная мелочь - время выполнения каждой строки. Это дает мне вожможность понять где скрипт может тормозить и т.д.
Так что это я проблемой не считаю
2)тут действительно присутствуют некоторые неудобства, скрипт не хочет идти назад, хотя в справке сказано:
F7 - Step into
F8 - Step Over
Shift + F8 - Step Out
F4 - Run to cursor
но, это не суть большая проблема, можно остановить в любой момент скрипт и начать с нужной строки.
3)тут я тоже вынужден не согласиться... если вы имеете ввиду то, что начав работу с середины скрипта, функции и переменные которые находятся в начале скрипта не выполнятся, то это не так. Вот скрипт, который был выполнен с последней строчки:
$value = "rubbish";
$a = "a1";
$b = $a."b2";
$c = $b."c3";
$d = $c."d4";
$e = $d."e5";
echo $e;
результат как и у дебаггера так и в броузере был один a1b2c3d4e5 хоть скрипт и отлаживался с последней строки.
А если то, что дебаггеру нельзя передать GET или POST, то это тоже не так. В программе есть такая опция, которая при запуске скрипта(а отладка это ни что иное как запускт, только пошаговый) передает в качестве параметра или GET или POST. Так что правдивость отладки обеспеченна.
Мне кажется плюсов больше чем минусов. Я не оспариваю плюсов логгера, бывает удобней просто залезть в лог и посмотреть что да как, но чаще лучше провести отладку в реальном времени, более наглядно и продуктивней сразу увидеть что, что-то пошло не так, исправить, и и прогнать этот кусок еще раз. Заметьте именно кусок, а не весь скрипт, что дает достаточно плюсов.
Мне кажется лучше всего держать на машине и дебаггер и логгер, это дает большую пластичность организации рабочего процесса.
P.S. кто каким логгером пользуется??
Original Demon, полностью с тобой согласен. Но мысль о отладчике мне пришла в голову после битвы с одним куском кода, он выглядит примерно так:
if($value1 !== $value2)(echo $string1;) else (echo $string2;)
он упорно выдавал $string1, хотя $value1 и $value2 были идентичны, что я там тока не делал, echo перед скриптом показывало что они действительно равны, причем один глюк был в разных броузерах. Вот тогда то ко мне и закралась мысль о дебаггерах. Этот кусок я исправил на if($value1 == $value2)(echo $string2;) else (echo $string1;), что почти тоже самое. Хотелось просто чтобы именно такое условие было, поскольку $value1 !== $value2 чаще чем равно.
Ну а насчет 100 Kb без дебаггера, так и окоп можно соперной лопаткой вырыть, однако с эксковатором легче
На 100 строк исходного кода обычно приходится 50-70 исполняемых операторов. При пошаговом проходе это полторы-две минуты. Внимание начинает рассеиваться.
Цитата:
Что вы имеете ввиду под выражение "процесс становится неуправляемым"?
См. выше.
Цитата:
Он состоит из 5-ти отдельных модулей, чистого кода в которых 1023 строки
1023 клика "продолжить"? Маньяк...
Цитата:
Причем эта информация доступна во время отладки, тоесть можно в любой момент посмотреть какая переменная что значит.
Ты можешь проверить, каким БЫЛО значение переменной два оператора назад?
Цитата:
Плюс еще маленькая, но приятная мелочь - время выполнения каждой строки.
С какой точностью?
Цитата:
если вы имеете ввиду
Не имею.
Цитата:
Мне кажется лучше всего держать на машине и дебаггер и логгер, это дает большую пластичность организации рабочего процесса.
Original Demon, и почему?? Я сразу сказал что я не супер монстр в кодинге на php, но насколько я понимаю так делать можно. Если нельзя, то подскажите как.
Crazy, первые три ваши притензии сводятся к тому, что много строк, и кликать много и не запоминается. Но ведь и суть дебаггера не в том чтобы весь код просматривать, а именно кусок, который интересен, и посмотреть значение переменной именно в этот момент.
Насчет отката назад я уже говорил, присутствую глюки, и это очень большой недостаток дебаггеров.
Точность в милисекундах, с двумя знаками после запятой, причем выводится линейная диограмма и можно сразу посмотреть где и что тормозит. Кстати, этим путем я выяснил что переход от html кода к php через <? довольно тормозной, и лучше писать echo.
А логгер желательно к php... )
И вообще я на досуге задумался о возможности совместного их использования. Дебаггер открывает сессию(мнеб щас свою сдать) и выполняет по строчке или блоком php код, по идее логгер должен это все запоминать. Если все настроить правильно, то пропадают недостатки дебаггера в шаге назад и просмотре значение несколькими операторами выше, а у логгера отпадает его неудобство в том, что надо запускать сразу весь скрипт.
Теперь осталось найти достойный логгер.…
Long, мне кажется что имеено проектирование самый сложный пункт, написать код это уже другой вопрос, необходимо понять для чего его писать, а как это уже 8- е дело
17 Сообщения: 4362 Зарегистрирован: 25.04.01 Откуда: Москва
Добавлено: 11 Июнь 2003, 09:31:31
NEfriT_U238, а кто говорил, что это просто? тут как в мультике - лучще день потерять, затом потом за час долететь. грамотно спланированная система позволяет избежать множество ошибок уже на начальном этапе, да и позволяет легко модифицировать и расширять себя. причем легко и непринужденно
_________________ Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
Но ведь и суть дебаггера не в том чтобы весь код просматривать, а именно кусок, который интересен
Учимся читать внимательно: "Требуется заранее локализовать нужный участок кода -- не более сотни строк". Т.е. прежде, чем начать пошаговую отладку, уже нужно как-то диагностировать проблему и расставить точки останова в ключевых местах.
Цитата:
Точность в милисекундах, с двумя знаками после запятой
Намекаю:
Цитата:
- Возраст скелета этого динозавра -- три миллиона лет и два месяца. - Откуда такая точность? - Я два месяца назад на работу устраивался и директор сказал, что скелету три миллиона лет.
Учимся читать внимательно: "Требуется заранее локализовать нужный участок кода -- не более сотни строк". Т.е. прежде, чем начать пошаговую отладку, уже нужно как-то диагностировать проблему и расставить точки останова в ключевых местах.
обычно проблему локализует сам php, говоря в какой строке ошибка, и уже на основе этого производится дальнейшая отладка, если это необходимо. Вообще отладка нужна только в крайних случаях, в основном ошибки понятны и так. Но в любом случае отладчик нужен, просто для того чтобы в некоторых ситуациях облегчить себе жизнь.
P.S. ну так что насчет логгера, есть ли встроенный в php или надо на стороне искать?
17 Сообщения: 4362 Зарегистрирован: 25.04.01 Откуда: Москва
Добавлено: 11 Июнь 2003, 15:58:59
встроенного нет, по крайней мере как мне кажется, в моем понимании логгера нет. а офибки бывают не только синтиксиса, но и логические. и тут тебя кроме как тщательной проверки и анализа ничего не спасет.
_________________ Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
Long, при любой ошибке необходим тщательный анализ кода, вот тока такие вещи как отладчик и логгер этот процесс упрощают.
Crazy, не расскажите что это за зверь такой WebSphere Application Developer, и если там встроены и логгер и дебаггер, то это вообще хорошо.
обычно проблему локализует сам php, говоря в какой строке ошибка, и уже на основе этого производится дальнейшая отладка, если это необходимо.
Если у тебя выругался сам PHP, то обычно достаточно просто анализа кода в месте ошибки. Пошаговая трассировка осмысленна разве что в случаях, когда программа работает, но не так, как нужно. А анализировать ломает -- хочется просто пробежаться и посмотреть, как оно работает.
Цитата:
Вообще отладка нужна только в крайних случаях, в основном ошибки понятны и так. Но в любом случае отладчик нужен, просто для того чтобы в некоторых ситуациях облегчить себе жизнь.
Кстати, обращаю внимание на разницу между "отладка" и "пошаговый отладчик".
Цитата:
P.S. ну так что насчет логгера, есть ли встроенный в php или надо на стороне искать?
что это за зверь такой WebSphere Application Developer
Среда разработки от фирмы IBM (построенная на технологии Eclipse). Предназначена прежде всего для Java. Какие-то плагины для PHP к нему есть, но отладчик только для Java.
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.