Программирование >>  Программирование с использованием ajax 

1 ... 48 49 50 [ 51 ] 52 53 54 ... 396



Отладка и обработка ошибок

До СИХ пор в книге рассматривались базовые детали простого программирования на С#. Прежде чем переходить к исследованию приемов объектно-ориентированного программирования в следующей части книги, необходимо ознакомиться со способами выполнения отладки и обработки ошибок в коде С#.

Ошибки в коде - это такая вещь, которая случается всегда. Каким бы хорошим ни был программист, проблемы всегда возникают, и потому хороший программист должен осознавать это и быть готовым к их разрешению. Конечно, некоторые проблемы являются незначительными и никак не влияют на работу приложения, как, например, ошибка в названии кнопки, но вопиющие ошибки тоже возможны и они могут приводить к полной остановке приложений (из-за чего обычно называются фатальными ошибками). К числу фатальных ошибок относятся как простые ошибки в коде, которые препятствуют компиляции {синтаксически£ошибки), так и более серьезные ошибки, которые происходят только во время выполнения. Некоторые ошибки являются неявными. Например, приложение может не справляться с добавлением записи в базу данных по причине отсутствия требуемого поля или добавлять запись с неправильными данными из-за других ограничивающих обстоятельств. Такие ошибки, при которых каким-либо образом страдает логика приложения, называются семантическими или логическими ошибками.

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



Затем будут рассмотрены приемы для обработки ошибок, доступные в С#. Они позволяют принимать меры предосторожности на случаи, в которых вероятно возникновение ошибок, и писать код, достаточно устойчивый для того, чтобы справляться с ошибками, которые в противном случае могли бы стать фатальными. Эти приемы являются частью языка С#, а не механизма отладки, но в IDE предусмотрены инструменты для оказания помощи программисту и здесь тоже.

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

□ Методы отладки, доступные в Visual Studio.

□ Приемы обработки ошибок, доступные в языке С#.

Отладка в VS и VCE

Ранее упоминалось о том, что приложения можно запускать двумя способами: с включением и без включения отладки. По умолчанию при запуске приложения из VS или VCE оно запускается с включением отладки. Это происходит, например, при нажатии клавиши <F5> или выполнении щелчка на кнопке с изображением зеленой стрелки и подписью Play (Воспроизвести) в панели инструментов. Запускать приложение без отладки можно путем выбора в меню Debug (Отладка) пункта Start Without Debugging (Запустить без отладки).

VS и VCE позволяют создавать приложения в двух конфигурациях: отладочной (Debug), используемой по умолчанию, и рабочей (Release). (На самом деле можно определять и дополнительные конфигурации, но эта методика здесь не рассматривается.) Переключаться между этими двумя конфигурациями можно с помощью доступного в стандартной панели инструментов раскрывающегося списка Solution Configurations (Конфигурации решения).

В VCE этот раскрывающийся список по умолчанию отключен. Для проработки материала настоящей главы его необходимо активизировать. Чтобы сделать это, сначала нужно выбрать в меню Tools (Сервис) пункт Options (Параметры), а потом в диалоговом окне Options (Параметры) удостовериться в том, что флажок Sflow АН Settings (Показывать все параметры) отмечен, перейти в категории Projects and Solutions (Проекты и решения) в подкатегорию General (Общие) и отметить флажок Show Advanced Build Configurations (Показывать расширенные конфигурации сборки).

При сборке приложения в отладочной конфигурации и его запуске в режиме Debug, происходит нечто более чем просто выполнение кода. В отладочных сборках сохраняется символьная информация приложения, чтобы IDE-среда точно знала, что происходит при выполнении каждой строки кода. Под символьной информацией подразумевается отслеживание, например, имен переменных, которые используются в некомпилированном коде, чтобы их можно было сопоставлять со значениями в скомпилированном коде, где не будет содержаться никакой читабельной человеком информации. Эта информация хранится в .pdb-файлах, которые, возможно, уже приходилось встречать в каталогах Debug, и позволяет выполнять множество полезных операций, часть из которых перечислена ниже.

□ Выводить отладочную информацию в IDE.

□ Просматривать (и редактировать) значения переменных в области видимости во время выполнения приложения.

□ Приостанавливать и возобновлять выполнение программы.

□ Автоматически останавливать выполнение программы в определенных точках кода.

□ Выполнять программы по одной строке за раз.



□ Следить за изменениями в содержимом переменных во время выполнения приложения.

□ Изменять содержимое переменных во время выполнения.

□ Выполнять тестовые вызовы функций.

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

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

Выполнение отладки в непрерывном (обычном) режиме

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

Console.WriteLine( Функция MyFuncO вызвана. ); MyFunc( Какие-то действия. );

Console.WriteLine( Функция MyFunc() завершена. );

Этот фрагмент кода показывает, как можно получать дополнительную информацию касательно функции по имени MyFunc (). Все это хорошо, но приводит к тому, что вывод в окне консоли становится немного захламленным, а при разработке приложений других типов, например, Windows Forms, консоль для вывода такой информации вообще не будет доступной. Поэтому существует альтернативный вариант - выводить такой текст в отдельном месте, а именно - в предлагаемом в IDE окне Output (Вывод).

В главе 2, где описывалось окно Error List (Список ошибок), уже упоминалось о том, что в этом же месте могут также отображаться и другие окна. Одним из них является окно Output, которое может быть очень полезным для отладки; оно отображается выбором в меню View (Вид) пункта Output (Вывод). Это окно предоставляет информацию, касающуюся компиляции и выполнения кода, включая ошибки, которые были обнаружены во время компиляции. Еще его можно использовать, как показано на рис. 7.1, для отображения специальной диагностической информации, осуществляя вывод прямо в него.

Show output tiOK Debug У1 ЛД,

iRrfAflor

(inof lliy Д Output

Puc. 7.1. Окно Output



1 ... 48 49 50 [ 51 ] 52 53 54 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика