2009-11-01 2 views
0

Каково приблизительное соотношение времени, которое обычно вы тратите на отладку на высоком уровне по сравнению с ошибками низкого уровня?Отладка: ошибки высокого уровня и низкого уровня

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

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

Кроме того, для сравнения, на каких языках вы в первую очередь используете и какого типа программирования вы в первую очередь делаете?

+0

Мои извинения. Но это скоро может быть закрыто под «Субъективным и аргументированным» –

+0

@ Ravi - Nah. Не аргументирован. –

+0

Ваши примеры для низкоуровневых и высокоуровневых ошибок кажутся мне противоречивыми. Например, вы упоминаете не обработанный крайный случай как ошибку высокого уровня, но и исключение нулевого указателя и ошибку «один за другим» в цикле как ошибки низкого уровня. Я считаю, что все три являются краевыми случаями алгоритма, которые часто не упоминаются в спецификации, или то, что вы бы назвали ошибками высокого уровня. Все они обычно вызваны неспособностью правильно протестировать разработчика. – gooli

ответ

1

По вашему определению почти все ошибки, которые я вижу, являются «высокоуровневыми» ошибками.

Я работаю на C# с использованием .net framework. Рамка заботится почти обо всем, что вы определяете как ошибки низкого уровня.

+0

Это именно то, что я собирался сказать. Если вы тратите более 2% времени отладки на то, что здесь классифицировано как «низкий уровень», возможно, пришло время обновить свою инструментальную цепочку! :) – Brian

0

Ошибки низкого уровня обычно фиксируются только компилятором. Поэтому сначала посмотрите на ошибки на высоком уровне, а затем на ошибки низкого уровня (при необходимости вообще). Потому что, пытаясь построить здание и подумать о создании сильных стен на слабо сконструированная база абсолютно бесполезна.

Свое смешное но true.Think об этом.

+1

Отладка ... О, я помню свой вопрос .. http://stackoverflow.com/questions/1592457/how-to-debug-a-program-without-a-debugger –

0

Если я правильно понял ваш вопрос, вы разделите ошибки на два типа - те, которые вызваны плохой практикой программирования и теми, которые вызваны проблемами в дизайне и спецификации. Предполагая, что мое понимание действительно правильно, я бы сказал, что в качестве разработчика я трачу больше времени на поиск ошибок низкого уровня, особенно если их трудно воспроизвести (да, чертовски многопотоковая ошибка, которая происходит только в процессе производства, я говорю с вы!). Ошибки дизайна и спецификаций, с другой стороны, обычно вызывают серьезные задержки для проекта, но их легче воспроизвести и найти в коде.

+0

Но зачем использовать, если вы пошли неправильно в самом дизайне или вы считаете неправильный алгоритм? –

+0

В том виде программного обеспечения для бизнеса, с которым я работаю в эти дни, существует довольно много бизнес-логики, которая имеет мало смысла. Иногда, когда я пытаюсь экстраполировать поведение в крайних случаях, я ошибаюсь - то есть не то, что люди хотят продукта.Это то, что я имею в виду, а не совсем неправильный дизайн. – gooli

Смежные вопросы