26 сентября 2017 1 12011

В предыдущей части мы рассмотрели исходный код и его составляющие.

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

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

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

Синтаксические ошибки

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

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

Семантические ошибки

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

Рассмотрим данный пример:

3 + 5 * 6

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

(3 + 5) * 6

3 + 5, заключенные в скобки, дадут желаемый результат, а именно 48.

Ошибки в процессе выполнения

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

Вот хороший пример:

input = 25  x = 0.8/(Math.sqrt(input) - 5)

Фрагмент кода выше будет скомпилирован успешно, но input 25 приведет к ZeroDivisionError. Это ошибка во время выполнения. Другим популярным примером является StackOverflowError или IndexOutofBoundError. Важно то, что вы идентифицируете эти ошибки и узнаете, как с ними бороться.

Существуют ошибки, связанные с тем, как ваш исходный код использует память и пространство на платформе или в среде, в которой он запущен. Они также являются ошибками во время выполнения. Такие ошибки, как OutOfMemoryErrorand и HeapError обычно вызваны тем, что ваш исходный код использует слишком много ресурсов. Хорошее знание алгоритмов поможет написать код, который лучше использует ресурсы. В этом и заключается отладка программы.

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

Отладка программы

Вот несколько советов о том, как правильно выполнять отладку:

  1. Использовать Linters. Linters – это инструменты, которые помогают считывать исходный код, чтобы проверить, соответствует ли он ожидаемому стандарту на выбранном языке программирования. Существуют линты для многих языков.
  2. Превалирование IDE над простыми редакторами. Вы можете выбрать IDE, разработанную для языка, который изучаете. IDE – это интегрированные среды разработки. Они созданы для написания, отладки, компиляции и запуска кода. Jetbrains создают отличные IDE, такие как Webstorm и IntelliJ. Также есть NetBeans, Komodo, Qt, Android Studio, XCode (поставляется с Mac), etc.
  3. Чтение кода вслух. Это полезно, когда вы ищете семантическую ошибку. Читая свой код вслух, есть большая вероятность, что вы зачитаете и ошибку.
  4. Чтение логов. Когда компилятор отмечает Error, обязательно посмотрите, где он находится.

Двигаемся дальше

Поздравляем! Слово «ошибка» уже привычно для вас, равно как и «отладка программы». В качестве новичка вы можете изучать кодинг по книгам, онлайн-урокам или видео. И даже чужой код вам теперь не страшен 🙂

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

Викторина

  1. Какая ошибка допущена в фрагменте кода Python ниже?
items = [0,1,2,3,4,5]  print items[8]  //комментарий: элементы здесь представляют собой массив с шестью элементами. Например, чтобы получить 4-й элемент, вы будете использовать [3]. Мы начинаем отсчет с 0.
  1. Какая ошибка допущена в фрагменте кода Python ниже?
input = Hippo'  if input == 'Hippo':    print 'Hello, Hippo'

Ответы на вопросы

  1. Ошибка выполнения: ошибка индекса вне диапазона.

2. Синтаксическая ошибка: Отсутствует стартовая кавычка в первой строке.

—>

Отладчик Visual Studio является мощным средством.The Visual Studio debugger is a powerful tool.Прежде чем мы покажем, как использовать его, мы хотим обсудить некоторые термины, такие как отладчик, отладки, и режим отладки.Before we show how to use it, we want to talk about some terms such as debugger, debugging, and debug mode.Таким образом, когда мы говорим о поиск и исправление ошибок, позже мы поговорим о то же самое.This way, when we talk later about finding and fixing bugs, we’ll be talking about the same thing.

Отладчик и отладкаDebugger vs. debugging

Термин отладки может означать много разных вещей, но наиболее буквально, это означает удаление ошибок в коде.The term debugging can mean a lot of different things, but most literally, it means removing bugs from your code.Теперь существует множество способов это сделать.Now, there are a lot of ways to do this.Например можно выполнить отладку путем сканирования кода поиск опечаток, или с помощью анализатора кода.For example, you might debug by scanning your code looking for typos, or by using a code analyzer.Можно выполнить отладку кода с помощью профилировщика производительности.You might debug code by using a performance profiler.Или можно выполнить отладку с помощью отладчик.Or, you might debug by using a debugger.

Отладчик является средством разработки очень специализированной, присоединение к выполняемому приложению и позволяет проверить код.A debugger is a very specialized developer tool that attaches to your running app and allows you to inspect your code.В документации по отладки для Visual Studio обычно это ввиду, когда мы говорим «отладка».In the debugging documentation for Visual Studio, this is typically what we mean when we say «debugging».

Режим, и приложение запускается отладкиDebug mode vs. running your app

При запуске приложения в Visual Studio в первый раз, можно запустить его, нажав кнопку с зеленой стрелкой на панели инструментов (или F5).When you run your app in Visual Studio for the first time, you may start it by pressing the green arrow button in the toolbar (or F5).По умолчанию Отладка значение отображается в раскрывающемся списке слева.By default, the Debug value appears in the drop-down to the left.Если вы не знакомы с Visual Studio, это можно оставить впечатление, что отладка приложения имеет какое-то действие которых запущено приложение—которого он выполняет—, но они, по сути, две совершенно разные задачи.If you are new to Visual Studio, this can leave the impression that debugging your app has something to do with running your app—which it does—but these are fundamentally two very different tasks.

Объект Отладка значение указывает конфигурации отладки.A Debug value indicates a debug configuration.При запуске приложения (нажмите зеленую стрелку или F5) в конфигурации отладки, запустить приложение в режим отладки, значит, вы запускаете приложение с подключенным отладчиком.When you start the app (press the green arrow or F5) in a debug configuration, you start the app in debug mode, which means you are running your app with a debugger attached.Благодаря этому полный набор возможностей, которые можно использовать для поиска ошибок в приложении отладки.This enables a full set of debugging features that you can use to help find bugs in your app.

Если у вас есть проект, выберите селектор раскрывающегося списка, где отображается надпись Отладка и выберите выпуска вместо этого.If you have a project open, choose the drop-down selector where it says Debug and choose Release instead.

Когда для этого параметра, следует изменить проект с конфигурации отладки для конфигурации выпуска.When you switch this setting, you change your project from a debug configuration to a release configuration.Проекты Visual Studio имеют отдельные конфигурации выпуска и отладки для вашей программы.Visual Studio projects have separate release and debug configurations for your program.Производится построение отладочной версии для отладки и версии выпуска для окончательного выпуска.You build the debug version for debugging and the release version for the final release distribution.Сборка выпуска оптимизирована для производительности, но лучше отладочную сборку для отладки.A release build is optimized for performance, but a debug build is better for debugging.

Когда следует использовать отладчикWhen to use a debugger

Отладчик является важным средством для поиска и устранения ошибок в приложениях.The debugger is an essential tool to find and fix bugs in your apps.Тем не менее контекст является Кинг и очень важно использовать все средства на вашей высвобождаемый объект помогут вам быстро устранить ошибки или ошибки.However, context is king, and it is important to leverage all the tools at your disposable to help you quickly eliminate bugs or errors.В некоторых случаях право «средство», может быть лучше кодирования.Sometimes, the right «tool» might be a better coding practice.С того, когда следует использовать отладчик и какого-либо другие средства, вы также узнаете, как более эффективно использовать отладчик.By learning when to use the debugger vs. some other tool, you will also learn how to use the debugger more effectively.

Следующие шагиNext steps

Из этой статьи вы узнали общие принципы отладки приложений.In this article, you’ve learned a few general debugging concepts.Теперь можно запустить, обучения, как выполнить отладку с помощью Visual Studio и как написать код с меньшим количеством ошибок.Next, you can start learning how to debug with Visual Studio and how to write code with less bugs.Следующие статьи, посвященные show C# примеры кода, но основные понятия распространяется на всех языках, поддерживаемых Visual Studio.The following articles show C# code examples, but the concepts apply to all languages supported by Visual Studio.

Отладка для начинающихDebugging for absolute beginners

Методы и инструменты отладкиDebugging techniques and tools

—>

Разработка программного обеспечения
Процесс разработки ПО
Ключевые процессы
Анализ • Проектирование • Программирование • Конструирование • Тестирование • Отладка • Развёртывание • Сопровождение • Документирование
Парадигмы и модели
Agile • Cleanroom • Итеративная • Спиральная • Каскадная • V-Model • Dual Vee Model
Методологии
ASD • DevOps • DAD • DSDM • FDD • Канбан • Lean SD • LeSS • MDD • MSF • PSP • OpenUP • RAD • RUP • SAFe • Scrum • TSP • UP • XP
Инструменты
Компилятор • Отладчик • Профилирование • GUI-конструктор • ИСР • Автоматизация сборки • Автоматизация релиза • Инструменты тестирования

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

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

Запись в журнале компьютера из Марк II, с мотыльком, приклеенным к странице

Существуют две взаимодополняющие технологии отладки.

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

Место отладки в цикле разработки программы

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

Примечания

Литература

  • Стив Магьюир, «Создание надёжного кода» (Steve Maguire. Writing Solid Code. Microsoft Press, 1993)
  • Стив Мак-Коннел, «Совершенный код» (Steve McConnel. Code Complete. Microsoft Press, 1993)

Ссылки

  • AMD64 Instruction-Level Debugging With dbx (англ.)
  • AMD64 Instruction-Level Debugging with Sun Studio dbx (англ.)

Эта страница в последний раз была отредактирована 26 ноября 2019 в 06:28.

ОСТАВЬТЕ ОТВЕТ

Please enter your name here
Please enter your comment!