debagger for php @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 32 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
NEfriT_U238
новый человек
0
Сообщения: 28
Зарегистрирован: 05.05.03
Заголовок сообщения: debagger for php
Сообщение Добавлено: 9 Июнь 2003, 23:05:19 
Добрый день.
Недавно возникла проблема найти дебаггер для php. Остановился я на нескольких вещах.
PHPEd - Редактор и отладчик.
DBG Php Debugger - это конкретно дебаггер.
есть еще Advanced PHP Debugger, но он тока под линукс, а мне именно надо под Win32. И насколько я понял, то DBG Php Debugger встраивается тока в некоторые программы, а я программиную в UltraEdit, а вот его в списках нет.… Подскажите пожалуста свое мнение, кто с чем работал, и вообще есть еще дебаггеры.
Original Demon Муж.
постоянный участник
9
Сообщения: 2719
Зарегистрирован: 18.04.02
Откуда: Hell of a Place
Сообщение Добавлено: 10 Июнь 2003, 00:16:34 
Ага, работал я с одним, который в вижуалку встроен. Не могу понять, зачем PHP дебаггер...

_________________
Original Demon - distributed world wide since 546 BC
NEfriT_U238
новый человек
0
Сообщения: 28
Зарегистрирован: 05.05.03
Сообщение Добавлено: 10 Июнь 2003, 00:37:20 
весчь архи удобная и архи важная... вод представь ситуацию, скрипт в определенном место проверяет равенство переменных, но что-то не работает... как ты проверяешь значение переменной перед проверкой?? echo $value … я тоже так делаю... А дебагером поставил остановку в этом месте и посмотрел значение... оч удобно. Возможно в маленьких скриптах лучше написать echo, но когда у тебя большой проект, и ты никак не поймешь где ошибка... вот тут-то и нужен дебагер .. Ну в самом деле, не будешь же ты echo 20 раз писать??
Original Demon Муж.
постоянный участник
9
Сообщения: 2719
Зарегистрирован: 18.04.02
Откуда: Hell of a Place
Сообщение Добавлено: 10 Июнь 2003, 09:50:29 
в своем коде я не ошибаюсь.

_________________
Original Demon - distributed world wide since 546 BC
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 10 Июнь 2003, 10:35:23 

NEfriT_U238 писал(а):
Возможно в маленьких скриптах лучше написать echo, но когда у тебя большой проект, и ты никак не поймешь где ошибка... вот тут-то и нужен дебагер .. Ну в самом деле, не будешь же ты echo 20 раз писать??



Нормальные люди пользуются в больших проектах не echo или, тем более, дебаггером, а логгерами. Дебаггер -- сугубо для скромных проектов.
Long Муж.
SubAdmin
Теоретик
17
Сообщения: 4362
Зарегистрирован: 25.04.01
Откуда: Москва
Сообщение Добавлено: 10 Июнь 2003, 11:13:24 
я бы еще вспомнил про модульность построения правильного проекта. т.е. в каждый конкретный момент пишется определенный модуль, он отлаживается, вылавливаются баги. таким образом получается работоспособный проект. и очень большой, и совсем маленький.

_________________
Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
NEfriT_U238
новый человек
0
Сообщения: 28
Зарегистрирован: 05.05.03
Сообщение Добавлено: 10 Июнь 2003, 12:25:43 

Crazy писал(а):
Нормальные люди пользуются в больших проектах не echo или, тем более, дебаггером, а логгерами. Дебаггер -- сугубо для скромных проектов.


я вынужден не согласиться с Вами. Допустим надо задать условие, и если true, то выполняется добавление в базу mysql таблицы. А если проверка выполняется ошибочно? Значит надо проверить переменные которые пришли к проверке. А пока Вы вытащите нужную информацию из логгера придется каждый раз удалять таблицу... И это самый просто вариант.

Long писал(а):
я бы еще вспомнил про модульность построения правильного проекта. т.е. в каждый конкретный момент пишется определенный модуль, он отлаживается, вылавливаются баги. таким образом получается работоспособный проект. и очень большой, и совсем маленький.


Никто не спорит, модульность помогает. Но я например сначала пишу весь модуль, а только потом его отлаживаю. А допустим надо переписать какой-то кусок или поменять какую-то функцию? То получается заново надо отлаживать? Так может уйти уйма времени. Поэтому я отлаживаю в самом конце. А с дебагерром просто удобно, поставил брейкпойнт, посмотрел что да как и решаешь, продолжать скрипт или нет.
Но это мое сугубо личное мнение. И я просто хотел узнать что лучше использовать
Long Муж.
SubAdmin
Теоретик
17
Сообщения: 4362
Зарегистрирован: 25.04.01
Откуда: Москва
Сообщение Добавлено: 10 Июнь 2003, 12:44:57 
NEfriT_U238, это всего лишь говорит о не правильной организации процесса. и прежде всего - процесса проектирования системы.

_________________
Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 10 Июнь 2003, 12:55:07 

NEfriT_U238 писал(а):
А если проверка выполняется ошибочно? Значит надо проверить переменные которые пришли к проверке. А пока Вы вытащите нужную информацию из логгера придется каждый раз удалять таблицу...



Чушь. Я вытащу эту информацию с первого раза.

1. Видим, что программа сработала неверно.
2. Поднимаем логи и находим ошибку.
3. Исправляем ошибку.
NEfriT_U238
новый человек
0
Сообщения: 28
Зарегистрирован: 05.05.03
Сообщение Добавлено: 10 Июнь 2003, 17:00:22 

Long писал(а):
NEfriT_U238, это всего лишь говорит о не правильной организации процесса. и прежде всего - процесса проектирования системы.


возможно... а Вы сможете сказать, что Ваша система организации правильная? Если Вы скажите что она правильна и совершенна, то я уверен что найдется очень много людей, которые смогут с Вами поспорить. У меня не очень много опыта в програмированни на php, начинал я с delphi, но тот как я пишу код мне нравится. Я не говорю что он идеален, в нем еще очень много надо дорабатывать, но во всяком случае я придерживаюсь своих правил, и я смогу поспорить о них и о их правильности.

Crazy писал(а):
Чушь. Я вытащу эту информацию с первого раза.
1. Видим, что программа сработала неверно.
2. Поднимаем логи и находим ошибку.
3. Исправляем ошибку.


возможно я еще просто не понимаю сути логгера, но на мой взгляд, лучше не напрягаясь пройти опасный участок дебаггером и посмотреть, что какая переменная принемает, чем ковыряться в логах, искать то что нужно. Дебаггер, на мой взгляд, выгоден и по времени и по возможностям.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 10 Июнь 2003, 17:31:34 
Возня с пошаговым дебаггером имеет следующие очевидные минусы:

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.
Original Demon Муж.
постоянный участник
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
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 10 Июнь 2003, 19:59:59 
Просто факт: сейчас большую часть рабочего времени я провожу в 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.
NEfriT_U238
новый человек
0
Сообщения: 28
Зарегистрирован: 05.05.03
Сообщение Добавлено: 10 Июнь 2003, 20:29:40 
попытаюсь опровергнуть минусы изложенные 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. кто каким логгером пользуется?? :cool:
Original Demon Муж.
постоянный участник
9
Сообщения: 2719
Зарегистрирован: 18.04.02
Откуда: Hell of a Place
Сообщение Добавлено: 10 Июнь 2003, 20:57:51 

NEfriT_U238 писал(а):
Он состоит из 5-ти отдельных модулей, чистого кода в которых 1023 строки



смешно. у меня лет 8 назад был проект на асме. 100Kb кода без всяких отладчиков.

_________________
Original Demon - distributed world wide since 546 BC
Original Demon Муж.
постоянный участник
9
Сообщения: 2719
Зарегистрирован: 18.04.02
Откуда: Hell of a Place
Сообщение Добавлено: 10 Июнь 2003, 21:00:44 
Crazy у нас совсем разные задачи :cool:

в общем случае, я хочу сказать, что при должном понимании того, что ты пишешь, отладчик не нужен.

_________________
Original Demon - distributed world wide since 546 BC
NEfriT_U238
новый человек
0
Сообщения: 28
Зарегистрирован: 05.05.03
Сообщение Добавлено: 10 Июнь 2003, 21:51:50 
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 без дебаггера, так и окоп можно соперной лопаткой вырыть, однако с эксковатором легче 8)
Original Demon Муж.
постоянный участник
9
Сообщения: 2719
Зарегистрирован: 18.04.02
Откуда: Hell of a Place
Сообщение Добавлено: 10 Июнь 2003, 22:10:32 
!== :laugh:

_________________
Original Demon - distributed world wide since 546 BC
Original Demon Муж.
постоянный участник
9
Сообщения: 2719
Зарегистрирован: 18.04.02
Откуда: Hell of a Place
Сообщение Добавлено: 10 Июнь 2003, 22:11:15 
NEfriT_U238 ты смешной =)))))))

_________________
Original Demon - distributed world wide since 546 BC
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 11 Июнь 2003, 00:07:05 

NEfriT_U238 писал(а):
1)почему не больше 100?



На 100 строк исходного кода обычно приходится 50-70 исполняемых операторов. При пошаговом проходе это полторы-две минуты. Внимание начинает рассеиваться.


Цитата:
Что вы имеете ввиду под выражение "процесс становится неуправляемым"?



См. выше.


Цитата:
Он состоит из 5-ти отдельных модулей, чистого кода в которых 1023 строки



1023 клика "продолжить"? Маньяк...


Цитата:
Причем эта информация доступна во время отладки, тоесть можно в любой момент посмотреть какая переменная что значит.



Ты можешь проверить, каким БЫЛО значение переменной два оператора назад?


Цитата:
Плюс еще маленькая, но приятная мелочь - время выполнения каждой строки.



С какой точностью?


Цитата:
если вы имеете ввиду



Не имею.


Цитата:
Мне кажется лучше всего держать на машине и дебаггер и логгер, это дает большую пластичность организации рабочего процесса.



Консенсус близок.


Цитата:
P.S. кто каким логгером пользуется?? :cool:



На PHP или вообще, в мировом масштабе? :)
Long Муж.
SubAdmin
Теоретик
17
Сообщения: 4362
Зарегистрирован: 25.04.01
Откуда: Москва
Сообщение Добавлено: 11 Июнь 2003, 08:08:47 
NEfriT_U238, проектирование системы и написание кода - два принципиально разных дейстия.

_________________
Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
NEfriT_U238
новый человек
0
Сообщения: 28
Зарегистрирован: 05.05.03
Сообщение Добавлено: 11 Июнь 2003, 09:03:47 
Original Demon, и почему?? Я сразу сказал что я не супер монстр в кодинге на php, но насколько я понимаю так делать можно. Если нельзя, то подскажите как.
Crazy, первые три ваши притензии сводятся к тому, что много строк, и кликать много и не запоминается. Но ведь и суть дебаггера не в том чтобы весь код просматривать, а именно кусок, который интересен, и посмотреть значение переменной именно в этот момент.
Насчет отката назад я уже говорил, присутствую глюки, и это очень большой недостаток дебаггеров.
Точность в милисекундах, с двумя знаками после запятой, причем выводится линейная диограмма и можно сразу посмотреть где и что тормозит. Кстати, этим путем я выяснил что переход от html кода к php через <? довольно тормозной, и лучше писать echo.
А логгер желательно к php... 8))
И вообще я на досуге задумался о возможности совместного их использования. Дебаггер открывает сессию(мнеб щас свою сдать) и выполняет по строчке или блоком php код, по идее логгер должен это все запоминать. Если все настроить правильно, то пропадают недостатки дебаггера в шаге назад и просмотре значение несколькими операторами выше, а у логгера отпадает его неудобство в том, что надо запускать сразу весь скрипт.
Теперь осталось найти достойный логгер.…
Long, мне кажется что имеено проектирование самый сложный пункт, написать код это уже другой вопрос, необходимо понять для чего его писать, а как это уже 8- е дело
Long Муж.
SubAdmin
Теоретик
17
Сообщения: 4362
Зарегистрирован: 25.04.01
Откуда: Москва
Сообщение Добавлено: 11 Июнь 2003, 09:31:31 
NEfriT_U238, а кто говорил, что это просто? ;) тут как в мультике - лучще день потерять, затом потом за час долететь. :) грамотно спланированная система позволяет избежать множество ошибок уже на начальном этапе, да и позволяет легко модифицировать и расширять себя. причем легко и непринужденно :)

_________________
Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 11 Июнь 2003, 09:33:41 

NEfriT_U238 писал(а):
Но ведь и суть дебаггера не в том чтобы весь код просматривать, а именно кусок, который интересен



Учимся читать внимательно: "Требуется заранее локализовать нужный участок кода -- не более сотни строк". Т.е. прежде, чем начать пошаговую отладку, уже нужно как-то диагностировать проблему и расставить точки останова в ключевых местах.


Цитата:
Точность в милисекундах, с двумя знаками после запятой



Намекаю:


Цитата:
- Возраст скелета этого динозавра -- три миллиона лет и два месяца.
- Откуда такая точность?
- Я два месяца назад на работу устраивался и директор сказал, что скелету три миллиона лет.

Original Demon Муж.
постоянный участник
9
Сообщения: 2719
Зарегистрирован: 18.04.02
Откуда: Hell of a Place
Сообщение Добавлено: 11 Июнь 2003, 10:30:31 
NEfriT_U238 !=

_________________
Original Demon - distributed world wide since 546 BC
NEfriT_U238
новый человек
0
Сообщения: 28
Зарегистрирован: 05.05.03
Сообщение Добавлено: 11 Июнь 2003, 15:14:02 

Crazy писал(а):
Учимся читать внимательно: "Требуется заранее локализовать нужный участок кода -- не более сотни строк". Т.е. прежде, чем начать пошаговую отладку, уже нужно как-то диагностировать проблему и расставить точки останова в ключевых местах.


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

P.S. ну так что насчет логгера, есть ли встроенный в php или надо на стороне искать?
Long Муж.
SubAdmin
Теоретик
17
Сообщения: 4362
Зарегистрирован: 25.04.01
Откуда: Москва
Сообщение Добавлено: 11 Июнь 2003, 15:58:59 
встроенного нет, по крайней мере как мне кажется, в моем понимании логгера нет. а офибки бывают не только синтиксиса, но и логические. и тут тебя кроме как тщательной проверки и анализа ничего не спасет.

_________________
Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
NEfriT_U238
новый человек
0
Сообщения: 28
Зарегистрирован: 05.05.03
Сообщение Добавлено: 11 Июнь 2003, 16:13:32 
Long, при любой ошибке необходим тщательный анализ кода, вот тока такие вещи как отладчик и логгер этот процесс упрощают.
Crazy, не расскажите что это за зверь такой WebSphere Application Developer, и если там встроены и логгер и дебаггер, то это вообще хорошо.
Long Муж.
SubAdmin
Теоретик
17
Сообщения: 4362
Зарегистрирован: 25.04.01
Откуда: Москва
Сообщение Добавлено: 11 Июнь 2003, 17:08:05 
NEfriT_U238, опять ты не про то говоришь. я говорю про то, что логическую ошибку компилятор тебе не локализует ни при каких условиях.
вебсфер - http://www.ibm.com/Search?v=11&lang=en& … earch.y=14

_________________
Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 11 Июнь 2003, 19:01:10 

NEfriT_U238 писал(а):
обычно проблему локализует сам php, говоря в какой строке ошибка, и уже на основе этого производится дальнейшая отладка, если это необходимо.



Если у тебя выругался сам PHP, то обычно достаточно просто анализа кода в месте ошибки. Пошаговая трассировка осмысленна разве что в случаях, когда программа работает, но не так, как нужно. А анализировать ломает -- хочется просто пробежаться и посмотреть, как оно работает.


Цитата:
Вообще отладка нужна только в крайних случаях, в основном ошибки понятны и так. Но в любом случае отладчик нужен, просто для того чтобы в некоторых ситуациях облегчить себе жизнь.



Кстати, обращаю внимание на разницу между "отладка" и "пошаговый отладчик". :)


Цитата:
P.S. ну так что насчет логгера, есть ли встроенный в php или надо на стороне искать?



Встроенного нет.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 11 Июнь 2003, 19:04:31 

NEfriT_U238 писал(а):
что это за зверь такой WebSphere Application Developer



Среда разработки от фирмы IBM (построенная на технологии Eclipse). Предназначена прежде всего для Java. Какие-то плагины для PHP к нему есть, но отладчик только для Java.
NEfriT_U238
новый человек
0
Сообщения: 28
Зарегистрирован: 05.05.03
Сообщение Добавлено: 11 Июнь 2003, 20:41:11 
Long, прошу прощения, я не подумал.
А вообще всем спасибо за участие в разговоре. Выводы я сделал :smile:
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 32 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100