Перейти к содержимому

Что отсутствует в следующем коде

  • автор:

Работа с кодом в Visual Studio

Область применения:yesVisual Studio Visual Studio для Mac noVisual Studio Code no

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

Мы разобрались, как работать с редактором, и написали код. Теперь необходимо убедиться, что код работает должным образом. Отладка в Visual Studio, как и в большинстве интегрированных сред разработки (IDE), осуществляется в два этапа: построение кода для обнаружения и устранения ошибок проекта и компилятора и выполнение кода для обнаружения ошибок времени выполнения и динамических ошибок.

Сборка кода

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

Самый простой способ выполнить сборку проекта — нажать клавишу F7, однако вы также можете начать сборку, выбрав в главном меню пункты Сборка>Собрать решение.

Screenshot of the Build menu in the Visual Studio IDE.

Процесс сборки можно наблюдать в окне вывода в нижней части пользовательского интерфейса Visual Studio (пользовательский интерфейс). Здесь отображаются ошибки, предупреждения и операции сборки. При наличии ошибок (или предупреждений выше заданного уровня) сборка завершится ошибкой. Вы можете выбрать ошибки и предупреждения, чтобы перейти к строке, в которой они произошли. Для перестроения проекта можно нажать клавишу F7 (чтобы перекомпилировать только файлы с ошибками) или CTRL+ALT+F7 (для чистого полного перестроения).

В окне результатов содержатся два окна с вкладками под областью редактора: окно Вывод, в котором содержатся необработанные выходные данные компилятора (включая сообщения об ошибках), и окно Список ошибок, содержащее список всех ошибок и предупреждений, к которому можно применить сортировку и фильтры.

После успешного выполнения построения вы увидите примерно следующие результаты в окне Вывод:

Screenshot of a Visual Studio successful build output.

Просмотр списка ошибок

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

Screenshot of the Visual Studio Output and Error List.

Выберите строку ошибки в окне списка ошибок, чтобы перейти к строке ошибки. (Или включите номера строк, нажав клавишу Ctrl+Q, ввод номеров строк и включение или отключение номеров строк. Это самый быстрый способ добраться до диалогового окна «Параметры «, где можно включить номера строк.)

Screenshot of the Visual Studio editor with line numbers.

Screenshot of the Visual Studio line numbers option.

Нажмите клавиши CTRL+G для быстрого перехода к номеру строки, в которой возникла ошибка.

Visual Studio идентифицирует эту ошибку с красным символом подчеркивания .Squiggle. Наведите указатель мыши на него для получения дополнительных сведений. Сделайте исправление и исчезнете, хотя вы можете ввести новую ошибку с исправлением. (Это действие называется регрессией.)

Screenshot of the Visual Studio error hover action.

Пройдите список ошибок и устраните все ошибки в коде.

Screenshot of the Visual Studio Debug errors window.

Просмотр подробных сведений об ошибках

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

Screenshot of the Visual Studio error list Bing search.

В зависимости от настроек результаты поиска по коду и описанию ошибки откроются в веб-браузере либо во вкладке Visual Studio с результатами поиска Bing. Результаты из многих различных источников в Интернете, и вы можете не найти все, чтобы быть полезным.

Анализ кода

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

Анализ кода C# и Visual Basic

Visual Studio содержит встроенный набор анализаторов платформы компиляторов .NET, которые проверяют код на C# и Visual Basic при его наборе. Вы можете установить дополнительные анализаторы в виде расширения Visual Studio или в виде пакета NuGet. При обнаружении нарушений правил они отображаются как в списке ошибок, так и в редакторе кода в виде волнистых элементов в коде обиженного кода.

Анализ кода C++

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

Нажмите клавиши ALT+F11 (или выберите в верхнем меню команду Анализ>Выполнить анализ кода в решении) для запуска статического анализа кода.

Screenshot of the Visual Studio Code Analysis menu item.

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

Screenshot of the Visual Studio Error List with Warnings.

Использование быстрых действий для исправления или рефакторинга кода

Быстрые действия, доступные с помощью значка лампочки или отвертки, позволяют выполнить встроенный рефакторинг кода. Это простой способ быстро и эффективно исправить распространенные предупреждения в коде C#, C++и Visual Basic. Для доступа к ним щелкните правой кнопкой мыши волнистую линию предупреждения и выберите Быстрые действия и рефакторинг. Или, когда курсор находится в строке с цветным волнистым цветом, нажмите клавиши CTRL + или выберите лампочку, лампочку ошибки или значок отвертки в поле. Затем Visual Studio отображает список возможных исправлений или рефакторингов, которые можно применить к этой строке кода.

Screenshot of the Visual Studio light bulb preview.

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

Screenshot of the

С помощью интерфейса вы можете быстро использовать клавиши со стрелками и ctrl +. Для проверка для простой рефакторинг возможностей и очистки кода!

Запуск очистки кода

В Visual Studio можно по запросу форматировать файл кода C#, в том числе параметры стиля кода, с помощью кнопки Очистка кода в нижней части редактора.

Screenshot of Code Cleanup button.

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

Отладка выполняемого кода

Теперь, когда вы успешно создали код и выполнили немного очистки, запустите его, нажав клавишу F5 или выбрав отладку запуска отладки >. Это действие запускает приложение в среде отладки, чтобы вы могли подробно наблюдать за его поведением. Интегрированная среда разработки Visual Studio изменяется во время выполнения приложения: окно Вывод заменяется двумя новыми окнами (в конфигурации окон по умолчанию): окном с вкладками Видимые/Локальные/Контрольные значения и окном с вкладками Стек вызовов/Точки останова/Параметры исключений/Вывод. Эти окна имеют несколько вкладок, которые позволяют проверять и оценивать переменные приложения, потоки, стеки вызовов и другие поведения при выполнении.

Screenshot of the Visual Studio Autos and Call Stack windows.

Остановите приложение, нажав клавиши SHIFT+F5 или кнопку Остановить. Кроме того, можно просто закрыть главное окно приложения (или диалоговое окно командной строки).

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

Задание простых точек останова

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

Установите точку останова, щелкнув дальнее поле строки, в которой требуется приостановить выполнение, или нажмите клавишу F9, чтобы установить точку останова в текущей строке кода. При запуске кода он приостанавливает (или прерывает) перед выполнением инструкций для этой строки кода.

Screenshot of a Visual Studio breakpoint.

Чаще всего точки останова используются для решения следующих задач.

  • Чтобы точнее определить источник аварийного завершения или отсутствия отклика программы, расставьте точки останова вокруг и непосредственно в коде вызова метода, который, по вашему мнению, приводит к сбою. При выполнении кода в отладчике удаляйте, а затем снова устанавливайте точки останова ближе друг к другу, пока не найдете строку кода, вызывающую ошибку. Выполнение кода в отладчике описывается в следующем разделе.
  • При вводе нового кода задайте точку останова в начале и запустите код, чтобы убедиться, что он работает должным образом.
  • При реализации сложного поведения задайте точки останова для алгоритмического кода, чтобы можно было проверить значения переменных и данные при прерывании программы.
  • При написании кода C или C++ используйте точки останова для остановки кода, чтобы можно было проверить значения адреса (ищите значение NULL) и просмотреть значения счетчиков при отладке ошибок, связанных с памятью.

Дополнительные сведения об использовании точек останова см. в разделе «Использование точек останова» в отладчике Visual Studio.

Проверка кода во время выполнения

Когда выполняемый код попадает в точку останова и приостанавливается, строка кода, помеченная желтым цветом (текущая инструкция) еще не выполнена. На этом этапе может потребоваться выполнить текущую инструкцию, а затем проверить измененные значения. Для выполнения кода в отладчике можно использовать ряд команд пошагового выполнения. Если отмеченный код является вызовом метода, вы можете выполнить шаг с заходом, нажав клавишу F11. Кроме того, можно выполнить шаг с обходом строки кода, нажав клавишу F10. Дополнительные команды и сведения о пошаговом переходе по коду см. в статье «Навигация по коду» с помощью отладчика.

Screenshot of the Visual Studio code window. A red dot in the left gutter indicates a breakpoint at the line of code marked in yellow.

На приведенном выше рисунке можно продвинуть отладчик один оператор, нажав клавишу F10 или F11 (так как здесь нет вызова метода, обе команды имеют одинаковый результат).

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

Screenshot of the Visual Studio code window. At the line of code marked in yellow, a variable is selected and a dropdown shows its current value and references.

Наведите курсор на переменную для просмотра ее текущего значения и ссылок. Если отображается значение, которое вы не ожидали увидеть, возможно, в предыдущем или вызывающем коде имеется ошибка. Дополнительные сведения см. в статье «Первый просмотр отладчика Visual Studio».

Кроме того, Visual Studio выводит на экран окно средств диагностики, где можно наблюдать за загрузкой ЦП и использованием памяти приложением в динамике по времени. В дальнейшем в процессе разработки приложения эти средства можно применять для выявления случаев непредвиденно высокой загрузки ЦП или чрезмерного выделения памяти. Используйте его с окном «Контроль » и точками останова, чтобы определить, что вызывает непредвиденные тяжелые ресурсы или нераспоставленные ресурсы. Дополнительные сведения см. в статье «Первый взгляд на средства профилирования» (C#, Visual Basic, C++, F#).

Выполнение модульных тестов

Модульные тесты — это первая линия защиты от ошибок в коде, так как при правильном проведении они позволяют проверять отдельные «модули» кода (как правило, это отдельные функции), которые проще отлаживать, чем всю программу. Visual Studio устанавливает платформу модульного тестирования Майкрософт для управляемого и машинного кода. Платформа модульного тестирования используется для создания модульных тестов, их запуска и передачи результатов таких тестов. Завершив внесение изменений, запустите модульные тесты повторно, чтобы убедиться, что код по-прежнему работает правильно. При использовании выпуска Visual Studio Enterprise можно настроить автоматический запуск тестов после каждой сборки.

Дополнительные сведения о модульных тестах в Visual Studio, а также о том, как они могут помочь в создании более качественного кода, см. в статье Основные сведения о модульных тестах.

Связанный контент

  • Первое знакомство с отладчиком
  • Создание, исправление и рефакторинг кода
  • Ознакомьтесь с документацией по отладчику

Предупреждение C6287

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

Имя анализа кода: REDUNDANTTEST

Пример

Следующий код создает это предупреждение:

void f(int x, int y) < // comparing against x twice is suspicious, should the second comparison use y? if ((x == 1) && (x == 1)) < //. >> 

В следующем коде показаны различные способы исправления этого предупреждения:

void f(int x, int y) < // Fixed the second comparison to use y if ((x == 1) && (y == 1)) < // . >// If the second comparison was unnecessary it could be removed if (x == 1) < // . >> 

Логические операторы

Материал на этой странице устарел, поэтому скрыт из оглавления сайта.

Более новая информация по этой теме находится на странице https://learn.javascript.ru/logical-operators.

Для операций над логическими значениями в JavaScript есть || (ИЛИ), && (И) и ! (НЕ).

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

|| (ИЛИ)

Оператор ИЛИ выглядит как двойной символ вертикальной черты:

result = a || b;

Логическое ИЛИ в классическом программировании работает следующим образом: «если хотя бы один из аргументов true , то возвращает true , иначе – false «. В JavaScript, как мы увидим далее, это не совсем так, но для начала рассмотрим только логические значения.

Получается следующая «таблица результатов»:

alert( true || true ); // true alert( false || true ); // true alert( true || false ); // true alert( false || false ); // false

Если значение не логического типа – то оно к нему приводится в целях вычислений. Например, число 1 будет воспринято как true , а 0 – как false :

if (1 || 0) < // сработает как if( true || false ) alert( 'верно' ); >

Обычно оператор ИЛИ используется в if , чтобы проверить, выполняется ли хотя бы одно из условий, например:

var hour = 9; if (hour < 10 || hour >18)

Можно передать и больше условий:

var hour = 12, isWeekend = true; if (hour < 10 || hour >18 || isWeekend)

Короткий цикл вычислений

JavaScript вычисляет несколько ИЛИ слева направо. При этом, чтобы экономить ресурсы, используется так называемый «короткий цикл вычисления».

Допустим, вычисляются несколько ИЛИ подряд: a || b || c || . . Если первый аргумент – true , то результат заведомо будет true (хотя бы одно из значений – true ), и остальные значения игнорируются.

Это особенно заметно, когда выражение, переданное в качестве второго аргумента, имеет сторонний эффект – например, присваивает переменную.

При запуске примера ниже присвоение x не произойдёт:

var x; true || (x = 1); alert(x); // undefined, x не присвоен

…А в примере ниже первый аргумент – false , так что ИЛИ попытается вычислить второй, запустив тем самым присваивание:

var x; false || (x = 1); alert(x); // 1

Дебаг и поиск ошибок

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

По опыту работы с начинающими разработчиками, я сталкиваюсь с тем, что поиск ошибок порой занимает слишком много времени. Не из-за того, что они глупее более опытных товарищей или не разбираются в процессах, а из-за отсутствия понимания с чего начать и на чём акцентировать внимание. В статье я собрал общие советы о том где обитают ошибки и как найти причину их возникновения. Примеры в статье даны на JavaScript и .NET, но они актуальны и для других платформ с поправкой на специфику.

Как обнаружить ошибку

Прочитай информацию об исключении

Если выполнение программы прерывается исключением, то это первое место откуда стоит начинать поиск.

В каждом языке есть свои способы уведомления об исключениях. Например в JavaScript для обработки ошибок связанных с Web Api существует DOMException. Для пользовательских сценариев есть базовый тип Error. В обоих случаях в них содержится информация о наименовании и описании ошибки.

Для .NET существует класс Exception и каждое исключение в приложении унаследовано от данного класса, который представляет ошибки происходящие во время выполнения программы. В свойстве Message читаем текст ошибки. Это даёт общее понимание происходящего. В свойстве Source смотрим в каком объекте произошла ошибка. В InnerException смотрим, нет ли внутреннего исключения и если было, то разворачиваем его и смотрим информацию уже в нём. В свойстве StackTrace хранится строковое представление информации о стеке вызова в момент появления ошибки.

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

Всю полученную информацию читаем вдумчиво и внимательно. Любая деталь важна при поиске ошибки. Иногда начинающие разработчики не придают значения этому описанию. Например в .NET при возникновении ошибки NRE с описанием параметра, который разработчик задаёт выше по коду. Из-за этого думает, что параметр не может быть NRE, а значит ошибка в другом месте. На деле оказывается, что ошибки транслируют ту картину, которую видит среда выполнения и первым делом за гипотезу стоит взять утверждение, что этот параметр равен null. Поэтому разберитесь при каких условиях параметр стал null, даже если он определялся выше по коду.

Пример неявного переопределения параметров — использование интерцептора, который изменяет этот параметр в запросе и о котором вы не знаете.

Разверните стек

Когда выбрасывается исключение, помимо самого описания ошибки полезно изучить стек выполнения. Для .NET его можно посмотреть в свойстве исключения StackTrace. Для JavaScript аналогично смотрим в Error.prototype.stack (свойство не входит в стандарт) или можно вывести в консоль выполнив console.trace(). В стеке выводятся названия методов в том порядке в котором они вызывались. Если то место, где падает ошибка зависит от аргументов которые пришли из вызывающего метода, то если развернуть стек, мы проследим где эти аргументы формировались.

Загуглите текст ошибки

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

Прочитайте документацию

Если ошибка связана с использованием внешней библиотеки, убедитесь что понимаете как она работает и как правильно с ней взаимодействовать. Типичные ошибки, когда подключив новую библиотеку после прочтения Getting Started она не работает как ожидалось или выбрасывает исключение. Проблема может быть в том, что базовый шаблон подключения библиотеки не применим к текущему приложению и требуются дополнительные настройки или библиотека не совместима с текущим окружением. Разобраться в этом поможет прочтение документации.

Проведите исследовательское тестирование

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

Бинарный поиск

В неочевидных случаях, если нет уверенности что проблема в вашем коде, а сообщение об ошибке не даёт понимания где проблема, комментируем блок кода в котором обнаружилась проблема. Убеждаемся что ошибка пропала. Аналогично бинарному алгоритму раскомментировали половину кода, проверили воспроизводимость ошибки. Если воспроизвелась, закомментировали половину выполняемого кода, повторили проверку и так далее пока не будет локализовано место появления ошибки.

Где обитают ошибки

Ошибки в своём коде

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

Ошибки в чужом коде

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

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

Ошибки в библиотеках

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

Первый случай хотя и редкий, но не стоит о нём забывать. В этом случае можно откатиться на другую версию библиотеки и создать Issue с описанием проблемы. Если это open-source и нет времени ждать обновления, можно собрать свою версию исправив баг самостоятельно, с последующей заменой на официальную исправленную версию.

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

Ошибки не воспроизводимые локально

Ошибка воспроизводится на develop стенде или в production, но не воспроизводится локально. Такие ошибки сложнее отлавливать потому что не всегда есть возможность запустить дебаг на удалённой машине. Поэтому убеждаемся, что ваше окружение соответствует внешнему.

Проверьте версию приложения

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

Проверьте данные

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

Проверьте соответствие окружений

Если проект на стенде развёрнут в контейнере, то в некоторых IDE (JB RIder) можно дебажить в контейнере. Если проект развёрнут не в контейнере, то воспроизводимость ошибки может зависеть от окружения. Хотя .Net Core мультиплатформенный фреймворк, не всё что работает под Windows так же работает под Linux. В этом случае либо найти рабочую машину с таким же окружением, либо воспроизвести окружение через контейнеры или виртуальную машину.

Коварные ошибки

Метод из подключенной библиотеки не хочет обрабатывать ваши аргументы или не имеет нужных аргументов. Такие ситуации возникают, когда в проекте подключены две разных библиотеки содержащие методы с одинаковым названием, а разработчик по привычке понадеялся, что IDE автоматически подключит правильный using. Такое часто бывает с библиотеками расширяющими функционал LINQ в .NET. Поэтому при автоматическом добавлении using, если всплывает окно с выбором из нескольких вариантов, будьте внимательны.

Похожая ситуация и с одинаково названными типами. Если сборка включает несколько проектов в которых присутствуют одинаково названные классы, то можно по ошибке обращаться не к тому который требуется. Чтобы избежать обоих случаев, убедитесь, что в месте возникновения ошибки идёт обращение к правильным типам и методам.

Дополнительные материалы

Алгоритм отладки

  1. Повтори ошибку.
  2. Опиши проблему.
  3. Сформулируй гипотезу.
  4. Проверь гипотезу — если гипотеза проверку не прошла то п.3.
  5. Примени исправления.
  6. Убедись что исправлено — если не исправлено, то п.3.

Подробнее ознакомиться с ним можно в докладе Сергея Щегриковича «Отладка как процесс».

Чем искать ошибки, лучше не допускать ошибки. Прочитайте статью «Качество вместо контроля качества», чтобы узнать как это делать.

Итого

  1. При появлении ошибки в которой сложно разобраться сперва внимательно и вдумчиво читаем текст ошибки.
  2. Смотрим стек выполнения и проверяем, не находится ли причина возникновения выше по стеку.
  3. Если по прежнему непонятно, гуглим текст и ищем похожие случаи.
  4. Если проблема при взаимодействии с внешней библиотекой, читаем документацию.
  5. Если нет документации проводим исследовательское тестирование.
  6. Если не удается локализовать причину ошибки, применяем метод Бинарного поиска.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *