LINUX.ORG.RU

Допустимы ли отладчики?

 , ,


0

2

Всё чаще наблюдаю такую закономерность: люди, любящие IDE и мощные отладчики, производят самый адов говноокод. А самый чистый код у тех, кто пользуется отладочной печатью, логами и тестами. ЛОР, а ты что думаешь? Допустимо ли debugger-driven development?

Те, кто пишут хороший код, плевать хотели на выдуманные правила типа того, о котором ты спрашиваешь.

anonymous
()

примеры давай, а т оопять из серии «три РНР програмиста сказали»

anonymous
()

может, всеж, от опыта зависит и от конкретного человека, а не gdb/printf?

ossa ★★
()
Последнее исправление: ossa (всего исправлений: 1)

Все допустимо. Кривизна рук тут не причем. Никогда не стоит отказываться от инструментов, если они полезны. Религия пускай идет лесом.

pathfinder ★★★★
()

Всё чаще наблюдаю такую закономерность: люди, не любящие goto производят самый адов говноокод. А самый чистый код у тех, кто пользуется goto. ЛОР, а ты что думаешь? Допустимо ли goto-driven development?

x4DA ★★★★★
()

люди, любящие IDE и мощные отладчики, производят самый адов говноокод

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

waker ★★★★★
()

Всё чаще наблюдаю такую закономерность: люди, не любящие пиво производят самый адов говноокод. А самый чистый код у тех, кто пьёт пиво. ЛОР, а ты что думаешь? Допустимо ли пиво-driven development?

lazyklimm ★★★★★
()
Ответ на: комментарий от x4DA

goto-driven development

Кхм, может это стоит трактовать, как «разработка, опирающаяся на посыл пожеланий в некое направление». Мне нравится.

pathfinder ★★★★
()

Иногда баг сидит не в том месте, где думаешь. Или какой-нибудь протокол только так отладить реально. А к простыне выхлопа постепенно привыкаешь и пробегаешь молниеносно, заодно контролируя алгоритм. Я его вообще не убираю. Выводится только в DEBUG, естественно.

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

ziemin ★★
()
Ответ на: комментарий от waker

Плюсую, с одним нюансом, при написании нормального кода необходимость в отладчике практически отсутствует, кроме совсем сложных участков кода, часто удобнее объявить объявить какой-нить глобальный procedure logDebug(Value:string) со сливом любых данных в логфайл и посмотреть отработку вживую без останова - иногда сам дебагер искажение в исполнение может вносить

handbrake ★★★
()

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

umren ★★★★★
()
Ответ на: комментарий от handbrake

На многопоточных приложениях и в «посмертном» анализе лог-файл вообще незаменим.

no-dashi ★★★★★
()

Любые действия которые приятны тебе и отладчику допустимы.

ilovewindows ★★★★★
()

Путать причину и следствие.

Kuzy ★★★
()
Ответ на: комментарий от handbrake

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

waker ★★★★★
()
Ответ на: комментарий от waker

Зависит от кода/платформы/языка. Я на сях сто лет не писал, там, да - дебагер, часть небольших .com'ов во времена доса писал прямо в хексе с отладкой в голове, большие проги на асме, да, без дебагера вообще никуда, в нем чуть-ли не разрабатываешь, на делфях, логирования - за глаза, за несколько лет писанины в нем дебагер пару раз только был нужен - там, чтобы он понадобился изрядно нахимичить нужно. Я с тобой согласен, глупо не пользоваться хорошим инструментом, но он не всегда быстрее/нужен и т.п. - просто хороший инструмент со своей областью применимости. Возврат select'a с субд, не будешь же дебагером разглядывать - проще грид прилепить, а если, например, БД дергаешь часто и сама логика подачи запросов (не обязательно БД- вообще любой внешний инстанс любого типа) является причиной ошибок (типа предыдущий запрос должен был обязательно завершиться тем-то, а не успел или не тем и ошибка вообще на другой стороне или в среде) дебагер время исполнения кода собьет и ошибка тупо на свет не выйдет, только логирование такое и покажет.

handbrake ★★★
()

Допустимы и отладчики и отладочная печать. В разных случаях разные инструменты оптимальней.

Legioner ★★★★★
()
Ответ на: комментарий от handbrake

По моему опыту в основном отладчик пригождается при исследовании нюансов работы сложных фреймворков.

Legioner ★★★★★
()

Сам факт того, что ТС вместо полноценного отладчика (например, gdb, про IDE вообще молчу) использует соснольный аутпут лишь говорит, что он вообще не имеет представления, с какими инструментами работает. Во-первых, если ты используешь IDE, то любой нормальный человек просто поставит брейк-поинт и посмотрит содержимое памяти и значение переменных, если у тебя в коде какие-то есть #IFDEF DEBUG PRINTFTOSOSNOOLEYOUPUTPVAR10050 в каждой функции, то тебе просто надо оторвать руки и пришить человеку, у которого мозг, а не интерпретатор php либо ганглий залитый водкой. Если так нужно извращаться над выводом, ты можешь написать отдельную функцию и нипаверишь, прям в рантайме вызывать ее в gdb, во время отладки.

nikolnik ★★★
()
Ответ на: комментарий от Legioner

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

handbrake ★★★
()

А может зависимость обратная?

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

rezedent12 ☆☆☆
()

Всё чаще наблюдаю такую закономерность: люди, употребляющие только растительную пищу, производят самый адов говноокод. А самый чистый код у тех, кто употребляет пельмени, обильно политые майонезом. ЛОР, а ты что думаешь? Допустимо ли eater-driven development?

// Не вижу предоставленных пруфов.

EXL ★★★★★
()
Ответ на: комментарий от nikolnik

Сам факт того, что ТС вместо полноценного отладчика (например, gdb, про IDE вообще молчу) использует соснольный аутпут лишь говорит, что он вообще не имеет представления, с какими инструментами работает.
инструментами

Нулёвая обезьянка детектед.

Во-первых, если ты используешь IDE, то любой нормальный человек просто поставит брейк-поинт

Зачем?

Во-первых брейкпоинт не работает в нормальном коде. Во-вторых твой хлебушек не осилит распарсить преобразования в коде сложнее скриптухи(т.е. это код, который состоит на 80% из вызовов готового говна, когда как тут ошибка может произойти только на этапе миграции аргументов/возвратов между собственно вызовами).

содержимое памяти

Зачем? Что там можно найти? Это он может получить и в соснольном аутпуте.

значение переменных

Переменных, рили? И откуда же они там возьмутся?

Если так нужно извращаться над выводом, ты можешь написать отдельную функцию и нипаверишь, прям в рантайме вызывать ее в gdb, во время отладки.

Зачем? Какие преимущества ему даст gdb? Ты должен их описать, а так к чему ты это толкаешь?

Высри мне пару преимуществ от гдб, когда я перейду на него с соснольного аутпута, сможешь? Т.е. не надо толкать мне высер бабуина, аля «ты говнарь», «илита выбирает отладчик», «типа „быстрее“» и прочее. Реальные и объективные преимущества.

anonymous
()
Ответ на: комментарий от anonymous

Во-первых брейкпоинт не работает в нормальном коде.
осилит распарсить преобразования в коде сложнее скриптухи
Зачем? Что там можно найти? Это он может получить и в соснольном аутпуте.
Переменных, рили? И откуда же они там возьмутся?

Мне кажется, или меня попытался укусить динамический скрипто-павиан?

nikolnik ★★★
()
Ответ на: комментарий от anonymous

Реальные и объективные преимущества.

Возможность прогуляться по стеку без гадания на кофейной гуще?

bj
()
Ответ на: комментарий от bj

Возможность прогуляться по стеку без гадания на кофейной гуще?

Ты из какой криокамеры вылез? Зачем может понадобиться гулять по стеку? Откуда он возмётся во вменяемом коде?

anonymous
()
Ответ на: комментарий от nikolnik

Мне кажется, или меня попытался укусить динамический скрипто-павиан?

Т.е. тебе по-существу ответить нечего и ты решил так невзначай обсериться?

anonymous
()

Хороший программист умеет отлаживаться без отладчика. Но это не значит, что он будет делать это постоянно. Да, есть интересные ошибки, которые под отладчиком пропадают, с ними надо возиться отдельно. Но глупо сводить всё к ним.

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

hobbit ★★★★★
()
Ответ на: комментарий от waker

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

Кстати, мне кажется, что дурная слава Delphi появилась по той же самой причине. Не потому, что она навязывает драг-н-дроп вместо кодирования (совершенно не навязывает), а потому, что её полюбили персонажи, которые по-другому просто не умеют.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

а потому, что её полюбили персонажи, которые по-другому просто не умеют.

Вероятно, что они с неё начали и на ней остались, а не просто полюбили. Иначе с чего бы им по-другому не уметь? Так что в их появлении она и виновата.

anonymous
()
Ответ на: комментарий от umren

писатели на плюсах более аккуратны

Тонко

anonymous
()
Ответ на: комментарий от anonymous

Откуда он возмётся во вменяемом коде?

Стек есть даже в гениальном коде. Если это не эзотерика какая.

bj
()
Ответ на: комментарий от hobbit

вполне вероятно.. но я практически никогда не сталкивался ни с делфи, не с персонажами которые в нем кодят. так что хз.

waker ★★★★★
()
Ответ на: комментарий от anonymous

Во-первых брейкпоинт не работает в нормальном коде.

што?

Что там можно найти?

Ты не представляешь, но, в принципе, все.

Зачем? Что там можно найти? Это он может получить и в соснольном аутпуте.

Т.е. по-твоему, вместо того, чтобы запустить программу в отладчике и вызвать когда надо какой-то print_debug(), надо в коде везде писать еще дополнительный код для отладки, который потом еще будешь стирать? Типа такого: #ifdef DEBUG makesosnooley(kvok,kvok,php,kudah) #endif

И ты хочешь сказать, что если тебе надо посмотреть еще что-то во-время выполнения, ты переписываешь еще добавляя кучу printf() или еще чего-то, после чего перекомпилируешь и запускаешь? А тебе в дестве зубы через анус не лечили?

Высри мне пару преимуществ от гдб, когда я перейду на него с соснольного аутпута, сможешь?

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

nikolnik ★★★
()
Ответ на: комментарий от bj

Стек есть даже в гениальном коде.

Твои познания о коде в районе нуля. Покажи мне этот стек. Только про буфера мне толкать не надо.

Если это не эзотерика какая.

А ну хорошо, покажи мне эту не эзотерику.

anonymous
()

А самый чистый код у тех, кто пользуется отладочной печатью, логами и тестами

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

crowbar
()
Ответ на: комментарий от anonymous

Только про буфера мне толкать не надо.

Да ладно, в твою черепушку спокойно шестой влезет и даже ничего не выдавит.

А сферический код без исполнителя действительно никогда не упадет.

bj
()
Ответ на: комментарий от crowbar

Если ты обозвал стектрейс стеком

Держи чай за астролога 80 левела)) Эта чурка действительно про динамические опарыши подумала.

bj
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.