Непонимание новичками понятия отладки

Нечто

Психолог РНРClub
phprus
Не в этом дело. Это даст право закрывать и выкидывать в корзину сразу.
 

Фанат

oncle terrible
Команда форума
Нечто.
Ты не понимаешь смысла правил.
Правила - это не свод отмазок от флеймеров "почему мою тему закрыли". Это список рекомендаций.
А закрыть и выкинуть можно и просто сообразуясь со здравым смыслом.
 

ForJest

- свежая кровь
По-моему уже есть способ закрывать - за "больше 15-ти строчек кода". Если строчек меньше - то значит человек уже разобрался где ошибка и умеет отлаживать. Если на два экрана - значит можно смело убивать.
Кстати может быть добавить в квик-клоуз ссылку на фак по отладке?
 

Фанат

oncle terrible
Команда форума
ForJest
не сработает. клянусь.
фак надо переписывать.
надо найти какие-то слова, другие
на данный момент фак одобряют только те, кто УЖЕ понимает, о чём там написано. Среди новичков процент понявших просто мизерный.
 

ForJest

- свежая кровь
Фанат
Ясно. Ну значит действительно нужно переписывать. Вообще там преподнесена методология. Но в виде "хочешь расскажу тебе сказку, дружок?" :). К тому же у человека не работает - он занят сейчас проблемой - ему не нужно учиться в данный момент - ему нужен набор способов, желательно очень лаконично изложенный. Типа глоток воды - сразу. А не пространная беседа о рытье колодцев и пользе лозоходства в отдельно взятом регионе :).
 

Фанат

oncle terrible
Команда форума
ForJest
Так там в начале как раз и попытка объяснить - почему ему это читать надо.
Правда, таки да - такого, сказочного типа.
В общем, я тут усиленно думаю в последнее время над редактуорой.
 

ForJest

- свежая кровь
Вообще я могу предложить сразу, с ходу замену началу статьи.
1. Поставь ini_set('display_errors', 1);
2. Поставь error_reporting(E_ALL);
3. Если стало много ошибок поставь error_reporting(E_ALL^E_NOTICE);
4. используй var_dump($var) для просмотра значений всех переменных. Или даже echo '<pre>',var_dump($array, 1),'</pre>';
5. Замени $result = mysql_query($query) на
mysql_query($query) or die(mysql_error());
6. Поставь отладочные печати в кажом подозрительном месте. Отладочная печать делается с помощью п.4. Печатай все переменные, значения которых не можешь угадать сразу. Или в значении которых нет уверенности.
7. Найди кусок, где всё идёт не так. Поставь отладочные печати до и после этого куска.
8. Повтори пункт 6 для найденного меньшего куска.
-------------------------
Если до сих пор ничего не получается, прочти объяснение каждого из пунктов ниже.
Дальше по одному абзацу, лаконично на каждый пункт.
И уже дальше после всего этого, если он уже вымотан и не получается - тогда нужно писать подробные объяснения принципов отладки.
 

Фанат

oncle terrible
Команда форума
предисловие всё равно нужно.
как раз из-за того, что
у человека не работает - он занят сейчас проблемой - ему не нужно учиться в данный момент
и нужен ему не набор способов, на самом деле, а ОТВЕТ =)
сначалав него надо вбить идею о том, что ошибку может найти ТОЛЬКО ОН САМ.
собственно, непонимание этого факта и есть причина появления данного топика.
Это как с двоичными числами ;)
если люди которые понимают и есть - которые нет.
Так вот пока он не поймёт, что отладдка - это единственный путь, а посыл на фак - это не снобизм, то посылать его бесплоезно.
 

phprus

Moderator
Команда форума
Фанат
Если ты имеешьв виду - http://phpfaq.ru/debug то его действительно надо переписывать, а именно давать реальные рекомендации в самом начале, а не к конце. ForJest правильно говорит (Цитата: Вообще я могу предложить сразу, с ходу замену началу статьи). Иначе посетители отправленные в FAQ могут просто не дочитать его до конца и преждевременно заявить что там ничего по его проблеме нет.
 

Фанат

oncle terrible
Команда форума
они это и так заявят.
поскольку ничего по их проблеме там таки действительно нет =)
 

ForJest

- свежая кровь
Фанат
Я не буду спорить с тобою. Я просто тебе предложил решение, которое будет работать.
Когда я иду по ссылке, которая называется:
"Ничего не работает! Что делать???"
Я, лично я, моё самоозоснание ожидает увидеть там ЧТО МНЕ ДЕЛАТЬ. С первых строк.
А что я получаю?
Итак. Диалог.
- Ничего не работает - что мне делать?
- Введение. Очень важное. (какое мля ещё введение?)
Ты написал программу, а она не работает.(гениально! Как вы нах догадались?)
Вариантов ты видишь немного (если бы у меня были варианты я бы не пришёл на эту ссылку, чё за идиотизм?)- либо сидеть и пытаться умственным усилием обнаружить ошибку, в сотый раз просматривая код, либо пойти на форум (по-моему надо мной издеваются - послав с форума на эту статью предлагают идти на форум)и попросить, чтобы там тебе нашли ошибку(ага, как же - нашли. Нашли, а потом догнали и ещё раз нашли).
Самое интересное, что есть третий, в сто раз лучше первых двух.
----------------------
Это мне напоминает
- Ну мы же не можем на вопрос: "Что находится в чёрном ящике" ответить "Потому что гладиолус!"
- Гыыы :) А чё? - Я могу!
----------------------
Если тебе не понятен идиотизм этой ситуации - (человек получает какую-то жвачку вместо ожидаемого решения или указаний что ему делать) то я пас :)
 

phprus

Moderator
Команда форума
Эксперимент надо провести. Хуже точно не будет, а вот лучше вполне возможно.
 

SiMM

Новичок
п. 5 от ForJestа несовсем полный :)
5. Замени $result = mysql_query($query) на
mysql_query($query) or die(mysql_error()."<br>\n".htmlspecialchars($query));
 

Sardonix

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

3BEP

Новичок
Для новичков, по моему, надо создать опросник, не заполнив который нельзя будет создать тему. Вопросы должны быть самые простые и заполняться не на одной странице, а поочереди. И после заполнения ответа давать самые вероятные советы. Например:
------------------------------------------------------------------------------------------
"Вообще не работает PHP!"
->
Создайте файл info.php в корне сайта и напишите в нем
PHP:
<?php
phpinfo();
?>
Здесь можно более подробно узнать о функции
phpinfo()
. Сохраните файл. Кнопка "Дальше" (или "Я все сделал" :D )
->
Запустите браузер и введите в адресной строке http://ваш.сайт/info.php
и скопируйте в это текстовое поле ответ.
[Поле для ввода ответа]
- Если вы видите
<?php
phpinfo();
?>
значит у вас не установлен PHP. Прочитать про установку PHP можно здесь, здесь и здесь.
- Если вы видите [Пример вывода функции phpinfo()] то PHP у вас работает.
. . . Еще несколько наиболее вероятных ответов
- Кнопки "Создать топик" и "Спасибо я разобрался"
------------------------------------------------------------------------------------------
Если разобрался - никакого топика не надо.
Если создается топик - будет хоть какая то информация для размышления.

Надеюсь общую идею мне удалось изложить. ;)
 

chulim

Новичок
Sardonix

мануал это такое же средство разработки как и IDE, PHP и т.д.
если бы всяк вопрошающий, корректно сформулировал бы проблему типа
чего я хочу?
что у меня получается?
почему получается не так?
то наверное этот форум зарос бы паутиной :) (т.е. в 90% случаев решение очевидно, если понять самому проблему)


3BEP
Как ты определишь новичок это или нет? Если у человека действительно нетривиальная проблема, он будет тыкаться по опроснику?
 

440hz

php.ru
Re: Непонимание новичками понятия отладки

Автор оригинала: Фанат
Все, кто более-менее продолжительное время тусуется на форуме, знают, что основную проблему новичков составляет неумение отлаживать программы.
Мне кажется, что основная проблема новичков это отсутстие культуры программирования и культуры общения. Можно исписаться FAQ`ами, HELP`ами и давать кучу ссылок, но результат будет нулевой.

и первые строчки могут быть такие:

"Ты пришел на этот форум учиться, учиться и еще раз учиться. Методы обучения этого форума жесткие, но точные, короткие но емкие. Прими это как данность и ..."

Вот этому и надо учить в первую очередь. Тогда и FAQ будет прочитан и код приведен нужный и ответы дойдут до умов сразу.
 
Сверху