LINUX.ORG.RU
ФорумTalks

Пошаговый визуальный отладчик тоже нужен

 , ,


0

3

Чтобы там не говорили апологеты «все должно покрываться тестами и этого достаточно» просто отладчик в котором можно ходить по строкам программы нужен!

Вот только что я с полчаса тупил и никак не мог понять в чем косяк в одной из программ, пока не сделал «прыг, прыг, прыг» по строчкам в ходе исполнения. Тут же стало ясно, что допустил сразу две ошибки: в if перепутал ветки с исполнением условия и else, а также в одном из классов вызывал метод And, вместо Or.

Причем все четко логировал и уже думал, что баг в используемой либе. В принципе, при внимательном просмотре кода и без отладчика можно было сообразить, но увы. Errare humanum est. Плюс глаз может «замыливаться». Отладчик помог яснее взглянуть на код.

★★★★★

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

Чтобы там не говорили апологеты «все должно покрываться тестами и этого достаточно»

И не все можно покрыть тестами. А дебаггеры и так есть, никто их не отбирал. Вот и вот.

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

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

praseodim ★★★★★
() автор топика

Тесты только показывают что где-то есть проблема. А вот находить и исправлять ошибку это другое.

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

Покрыть можно всё.
Не всё нужно покрывать.

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

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

praseodim ★★★★★
() автор топика

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

ЗЫ. СТ капитан очевидность.

:)

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

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

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

Потому что обойтись и найти ошибку я мог бы и без него.

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

Для разных задач разные инструменты.

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

Луговский чуть не с пеной у рта доказывал

Он же кретин, что с него можно взять.

Solace ★★
()

Чтобы там не говорили апологеты «все должно покрываться тестами и этого достаточно»

Вот только что я с полчаса тупил и никак не мог понять в чем косяк в одной из программ, пока не сделал «прыг, прыг, прыг» по строчкам в ходе исполнения. Тут же стало ясно, что допустил сразу две ошибки: в if перепутал ветки с исполнением условия и else, а также в одном из классов вызывал метод And, вместо Or.

rtfm code coverage.

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

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

... в 4 раза дольше

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

Ну где теперь этот твой Луговский?

Говорили, в какой-то великобританский университет свалил лет 9-10 назад. Академические структуры, все дела ... разработка компиляторов.

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

При этом не один проект Луговского не выстрелил. За исключением одного - воспитал таки интерес к функциональным языкам программирования. На этом всё.

alman ★★★
()

В MS Visual Studio лучший отладчик из всех когда либо существовавших. Сейчас раскрою один секрет - по информации от одного инсайдера в самой Microsoft используется более продвинутая версия отладчика - она умеет... Нет, я могу публично это говорить.

Впрочем, это не имеет значения. Отладка в общедоступной версии MS Visual Studio наиболее проста и удобна.

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

Это какой-то маркетинг и общие слова которые для рекламы годятся. Т.е. ты сам не знаешь даже что в мелкомягком отладчике есть такого, чего нет в gdb и фронтэндах к нему?

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

Не только Луговский, но и Линус говорил это. И они правы. Проблема в том, что вы просто их не поняли.

Если у тебя под рукой отладчик, то ты полагаешся на него и пишешь код левой пяткой правой ноги. Для профи это не беда - он так не пишет. Но как ты станешь профи? И как отладчик тебе поможет если ветка элсе ДОЛЖНА сработать только в экстренной ситуации и ты ее не можешь смоделировать. Или не хочешь.

Тесты и отладка ортогональны. Так в одном банке в течении 2-х лет программист ЕЖЕМЕСЯЧНО «оптимизировал» расчет начисления процентов по вкладу. «Оптимизированная» формула правильно работала каждый день месяца, кроме последнего. А по хорошему после первой ошибки он должен был написать тест и при каждом внесенном изменении в код прогонять его (и другие).

Сначала к нему ездили с коньяком, но через пол года с кулаками.

Лично я считаю, что отладчик еще зависит от языка. в ВБ без него нельзя. В Python за более чем 16 лет я ни разу его не использовал.

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

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

О gdb вообще речи не веду. А фронтэнды - видел только один. Встроенный в Turbo C лохматых готов отладчик был на порядок удобнее того, что я увидел в фронэнде к gdb.

alman ★★★
()
Последнее исправление: alman (всего исправлений: 1)
Ответ на: комментарий от BlackJack

Не буду говорить про все морды к gdb, но QtCreator не обязывает меня выставлять «бряки» до запуска программы. Я могу это делать в любое время.
Если не ошибаюсь, так было всех отладчиках, которые младше меня.

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

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

Это баг, а не фича. После «изменения кода без полной перекомпиляции» никаких гарантий адекватной работы нету вообще и соответственно дальше процесс отладки превращается в гадание на кофейной гуще.

О gdb вообще речи не веду. А фронтэнды - видел только один.

А, тогда всё ну понятно, да.

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

Как бы мне по-барабану в чём тебе удобнее отлаживать. Нравится gdb - пользуй. Я высказал своё мнение, которое основывается на моём опыте.

Кстати, мне вдруг стало интересно - каков он, лучший фронтэнд к gdb. Вместо тысячи слов дай URL - авось пригодится. Или хотя бы назови его.

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

Если сравнивать с другими IDE, то я соглашусь. Ни Qt Creator, ни Eclipse не столь удобно отображают все это веселье. Прочие не буду называть, ибо часть их них не пробовал, а другая часть вызвала прогорание сиденья стула.

RiseOfDeath ★★★★
()
Последнее исправление: RiseOfDeath (всего исправлений: 1)
Ответ на: комментарий от alman

Я высказал своё мнение, которое основывается на моём опыте.

А я свое, основанное на своем опыте работы в разных системах. step-by-step execution, брейкпоинты, принудительный переход на нужную инструкцию (например в обход ошибочкого условия в if'е), анализ и изменение содержимого переменных умеют и студия и gdb. Ни одной прямо киллер-фичи студии я не вижу, чтобы можно было кричать на каждом углу «самый лучший самый уобный самый-самый самый-самый отладчик».

Кстати, мне вдруг стало интересно - каков он, лучший фронтэнд к gdb.

В качестве стёба: для тебя - явно ms visual studio :)

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

Для профи это не беда - он так не пишет. Но как ты станешь профи? И как отладчик тебе поможет если ветка элсе ДОЛЖНА сработать только в экстренной ситуации и ты ее не можешь смоделировать. Или не хочешь.

Как уже сказали, это разные инструменты. Тесты нужны, но и отладка тоже. Смоделировать же при желании можно все, хотя бы на уровне отдельных модулей.

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

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

rtfm code coverage.

Отладочная печать (логи) есть, тесты тоже. Но чтобы 100% каждую строчку покрыть... В общем, быстрее таки при ошибках в отладчике посмотреть косяки.

praseodim ★★★★★
() автор топика

Увы, нормальные дебаггеры для компилируемых языков доступны только юзерам винды в виде вижуалстудии, а на ляликсе оно НИНУЖНО, ведь есть gdb.

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

Я ж говорю, rtfm. При отработке тестов у тебя красивая картинка показывается с зелеными и красными цветами и ты видишь, какой код отработал, а какой нет. Всё. Это делается автоматически, одновременно с отработкой тестов. И очень большой вероятностью ты бы увидел проблемы в своём if'е.

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 1)
Ответ на: комментарий от invy

Всё так, но всё же тесты и дебаггер по-прежнему ортогональные вещи. Дебаггер ничто не заменит.

Кстати, как обстоят дела с красивыми картинками для рекурсивных функций? И они уже могут сказать что, скажем, были опробованы все комбинации if-ов в функции? Потому что сам по себе факт того что каждый if был вызван хотя бы один раз ничего не говорит. Т.е. такое покрытие может быть 100%, но это не значит что функция валидна для любого набора входных данных.

true_admin ★★★★★
()

Отладчиком хорошо по тесту прыгать, искать почему он не проходит :)

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

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

Кстати, как обстоят дела с красивыми картинками для рекурсивных функций?

Как тесты напишешь, так и обстоят.

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

рекурсивные функции прогонять в отладчике — то ещё удовольствие.

Почему? «сто раз так делал». Можно даже посмотреть что творится с переменными на стэке в различных эээ уровнях вложенности. Удобненько.

true_admin ★★★★★
()

в if перепутал ветки с исполнением условия и else, а также в одном из классов вызывал метод And, вместо Or.

И это должно было быть покрыто тестами, так что твой случай только подтверждает опровергаемый тобой тезис.

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

cgdb

Серьёзно? Вот это лучшая надстройка на gdb: http://cgdb.github.io/images/screenshot_debugging.png

оно проигрывает даже вот этому: http://image2.wangchao.net.cn/baike/1336346441188.jpg

хотелось бы увидеть что-то хотя бы такого уровня, но только для gdb: http://freesoft.ru/screenshots/Linux/701564/701564-3-orig.jpg

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

Так а в чём оно проигрывает? Снизу gdb, сверху vim, всё скриптуется, есть маппинги любой гдбшной команды в «vim»-часть. Чего не хватает? Если знаешь синтаксис gdb, то осилишь настроить под себя что угодно.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от slovazap

И это должно было быть покрыто тестами, так что твой случай только подтверждает опровергаемый тобой тезис.

Тесты и выявили неправильное поведение программы. Что конкретно пошло не так без дебагера сказать было сложно.

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

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

Сравни с моим сценарием отладки. Бизнес логика пишется и отлаживается в консольном приложении MS Visual Studio, затем проект переносится в Linux, пишется Makefile, проект собирается, запускается и... core dumped. И вот тут уже может прийти на помощь gdb чтобы найти место падения. Далее всё относительно быстро исправляется и программа начинает работать. Для таких случаев даже фронтэнд для gdb не нужен, консоли gdb вполне достаточно.

всё скриптуется,

Лишняя сущность. С таким же успехом, если не проще, можно средства отладки встроить в саму отлаживаемую программу и обнрнуть ifdef'ами или задавать ключом опцию режима отладки.

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

Бизнес логика пишется и отлаживается в консольном приложении MS Visual Studio

И бизнес превращается в Сбербанк

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

В MS Visual Studio лучший отладчик из всех когда либо существовавших.

В каком месте?

Вижла полное говно, но отладчик там отличный.

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