C# и Я

О программировании в C#, о себе и немного флуда на разнообразные темы.

Отладка приложений C# в Visual Studio.

Visual Studio, by admin.

Script_Debugger

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

Сегодня рассмотрим основы отладки приложений в Visual C# 2010 и посмотрим, как пользоваться некоторыми инструментами для того, чтобы сделать отладку максимально удобной и быстрой.


Фиксация ошибок на этапе разработки.

С этой функцией Visual Studio может столкнуться кто угодно, в особенности новички в том или ином языке программирования. В случае, если на этапе написания какого-либо кода программист допускает ошибку, которая может быть проанализирована ещё ДО компиляции и запуска программы – Visual Studio об этом сообщит в окне “Список ошибок”. На следующем рисунке представлен пример вывода сообщения об ошибке – в коде отсутствует точка с запятой:

debugger_1

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

Фиксация ошибок на этапе выполнения программы

Допустим, что код у нас написан правильно с точки зрения синтаксиса, все объекты правильно определены и Visual Studio готова запустить программу на выполнение. Довольно часто могут возникать ситуации, когда на этапе выполнения программы в какой-либо метод передается неверный параметр, скажем, в качестве пути к локальной базе данных, может случайно передаться пустая строка – в этом случае обязательно возникнет исключительная ситуация. Такие моменты студия также фиксирует, если приложение запускается из среды IDE. Например, на следующем рисунке показан вывод сведений об ошибке, рассмотренной выше – я специально передал в качестве пути к локальной БД пустую строку и никак не защитил опасный код:

debugger_2

Как видите, VS выводит окно, в котором дается небольшое пояснение об исключительной ситуации. Здесь Вы можете:

  • просмотреть сведения об ошибке в справочных материалах.
  • поискать решение проблемы в сети.
  • просмотреть сведения об ошибке.
  • скопировать сведения исключения в буфер обмена.

При выборе опции “Просмотр сведений” откроется ещё одно окно в котором сдержится подробная информация об исключительной ситуации:

debugger_3

Сведения об этой исключительной ситуации при запуске программы не через VS выглядят так:

debugger_4

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

Работа с отладчиком в Visual C#

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

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

Точка останова или breakpoint – это преднамеренная остановка выполнения программы, при котором выполняется вывод отладчика.

Чтобы установить breakpoint необходимо установить курсор на нужной строке и выбрать в меню “Отладка – Точка останова” или нажать [F9]. При этом строка с точкой останова будет помечена:

 breakpoint

Для примера, я решил вначале остановиться на предшествующей ошибке строке. Теперь запускаем программу из IDE, нажав [F5]. Как только выполнение программы дойдет до точки останова – выполнение прервется и запустится отладчик. При этом вид строки на которой произошла остановка будет следующим:

 breakpoint_2

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

debugger_5

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

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

debugger_6

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

debugger_7

В случае более сложного процесса отладки можно сохранять не только значение отдельной переменной, но и целые деревья объектов и значения их свойств, например так:

debugger_8

Теперь, когда м закрепили окно с информацией отладчика и нашли проблему, можно попробовать её исправить. Для этого останавливаем выполнение программы, нажав [Shift+F5] – окно с информацией отладчика исчезнет. Исправляем ошибку, в нашем случае достаточно передать в переменной путь к БД. Снова запускаем программу через [F5] и смотрим на вывод отладчика:

debugger_9

На рисунке представлен вывод по объекту connection. Так как мы находимся на строке в которой свойству ConnectionString передается значение, то мы ещё не видим решена ли проблема или нет. Мы, конечно, можем снова вызвать всплывающее окно со значением переменной ConnectStr, а можем поступить иначе – по нажатию клавиши [F11] переместиться на строку ниже и увидеть результат:

debugger_10

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

Кстати, всю информацию по подсказкам. которые мы с Вами устанавливаем в ходе отладки можно экспортировать в отдельный XML-файл, для чего необходимо в меню выдрать “Отладка – Экспорт подсказок по данным” и потом, в случае необходимости снова импортировать в Visual Studo.

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


Related posts:

  1. Работа с формами в Visual Studio C#.

Back Top

Responses to “Отладка приложений C# в Visual Studio.”

Comments (0) Trackbacks (0) Leave a comment Trackback url
  1. No comments yet.
  1. No trackbacks yet.

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

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

*


extended battery HLI-BG58100SL