Программирование и работа с кодом
Окно Breakpoints в Visual Studio дает удобный способ организации и управления множеством условий, по которым вы хотите выйти в отладчик. Вы получаете доступ к этому окну через меню Debug или панель инструментов (или при помощи нажатия <Ctrl>+<D>, <В> в C# или <Ctrl>+<Alt>+<B> в VB). На рис. 10.22 показано окно Breakpoints внутри Visual Studio.
Панель инструментов окна Breakpoints
Окно Breakpoints имеет собственную панель инструментов, которая позволяет вам управлять точками прерываний в окне. Команды, которые имеются в панели инструментов, описаны подробно в табл. 10.4.
Окно Breakpoints также дает вам доступ к каждой отдельной точке останова. Оно служит стартовой точкой для настройки многих опций, связанных с точками останова. Например, вы можете деактивировать отдельную точку останова при помощи снятия галочки около точки останова в списке точек останова. Кроме того, вы можете настроить множество свойств и условий, связанных с точкой останова. На рис. 10.23 показаны деактивированная точка отслеживания и контекстное меню, связанное с точкой останова.
Обратите внимание, что из этого контекстного меню вы можете удалить точку останова, а также перейти к соответствующему ей исходному коду. Однако более важно то, что здесь есть доступ к настройке условий и…
Часто одной установки простой точки останова недостаточно (либо она неэффективна). Например, если вы ищете выполнение в вашем коде определенного условия (которое, возможно, вызывает исключительное состояние), то вам лучше делать останов по этому условию. Это сэкономит время на постоянные входы в функции, при которых вы только изучаете несколько элементов данных и видите, что ваше условие не выполнено.
Имеется пять типов условий, которые вы можете добавить к точке останова: Location, Condition, Hit Count, Filter и When Hit. Вы добавляете условие к точке останова в окне Breakpoints. Выберите точку останова и нажмите правую кнопку мыши. Это действие активирует контекстное меню для данной точки…
Условие точки останова позволяет вам выйти в отладчик (или выполнить некое действие в случае точки отслеживания) тогда, когда некоторое условие будет либо выполнено, либо изменится. Часто вы знаете, что отлаживаемая вами ошибка происходит только при совершенно конкретных условиях. Условия точек останова — это отличное средство для поиска перемежающихся ошибок.
Для настройки условия выделите точку останова, для которой вы хотите добавить условие. Затем выберите пункт Condition из контекстного меню (через щелчок правой кнопкой мыши). Это активирует диалоговое окно Breakpoint Condition (рис. 10.25). Обратите внимание, что при настройке условия у вас есть доступ к технологии IntelliSense (вы можете вызвать IntelliSense либо щелчком…
Вы можете отредактировать точку останова так, чтобы прерывание происходило в определенном месте файла. Большинство точек останова работает именно так. То есть они знают файл, номер строки и символ, на котором должен произойти останов.
Однако бывают случаи, когда вам может понадобиться изменить эту информацию. Предположим, что ваш код несколько отличается от выполняющейся сборки. Возможно, вам придется отредактировать свои точки останова (для того чтобы срабатывание происходило на другой строке кода).
На рис. 10.27 показан пример окна File Breakpoint, открытого через пункт Location контекстного меню точки останова. Вы можете также использовать эту функциональную возможность для быстрой установки точки останова в конкретной строке (без…
Фильтры точек останова позволяют вам указать конкретный компьютер, процесс или поток, в котором должен произойти останов. Например, если ваша ошибка происходит только на определенном компьютере или в определенном процессе, то вы можете отлаживать именно это условие (при помощи фильтра). Фильтры наиболее полезны в сложных сценариях отладки, когда ваше приложение имеет ярко выраженный распределенный характер.
Для использования этой функциональной возможности вы можете задать компьютер по имени, а процесс — по имени или идентификатору. Вы можете также указать комбинации при помощи операций. Это позволяет вам добраться до конкретного потока конкретного процесса на конкретном компьютере. На рис. 10.28 показано диалоговое окно, в котором…
Используя команду Hit Count, вы сообщаете отладчику, что хотите прервать выполнение тогда, когда данная строка кода выполнится определенное количество раз. Обычно можно найти более удобное условие останова, чем Hit Count. Однако эта функция полезна в тех
случаях, когда вы не можете указать реальное условие, но знаете, что когда вы проходите через функцию определенное количество раз, то начинаются проблемы. Кроме того, опция Hit Count может быть более полезной в сценариях с точками отслеживания, когда вы выдаете данные о том, что происходит в вашем коде. Возможно, вам будет удобно выдавать эти данные только время от времени.
На рис. 10.29 показано диалоговое окно…
Точки отслеживания позволяют вам выдать данные в окно Output или выполнить макрос для Visual Studio в том случае, когда встретилась определенная точка останова. После этого вы можете выйти в отладчик (как и в случае с обычной точкой останова), обработать другое условие или просто продолжить выполнение приложения. Эта возможность может быть очень полезной тогда, когда вы хотите поддерживать журналирование всего того, что происходит в вашем приложении при отладке. Затем вы можете просмотреть этот журнал, чтобы получить ценную информацию о конкретных условиях и порядке выполнения (когда происходит исключение).
Вы можете настроить точки отслеживания явным образом (при помощи щелчка правой кнопкой мыши по…
После того как отладчик вывел вас в режим останова, следующим делом необходимо отфильтровать выдаваемые вашим приложением данные. Нахождение нужных данных поможет вам быстро обнаружить ошибки и быстро их исправить. Visual Studio старается дать вам данные там, где они вам нужны. Например, DataTips показывает вам значения переменных прямо в редакторе кода. Есть еще много аналогичных примеров того, как Visual Studio показывает вам отладочные данные тогда и там, где они вам нужны. В следующих разделах мы опишем эти случаи (и не только их).
Наблюдение за переменными
Обычным делом в сеансе отладки является наблюдение за значениями типов вашего приложения. Для этого существует много…
Окно Locals показывает все переменные и их значения для текущей области видимости отладчика. Это дает вам представление обо всем, что имеется в текущем выполняющемся методе. Переменные в этом окне автоматически настраиваются отладчиком. Они организованы в список по имени в алфавитном порядке. Кроме того, иерархия также показана. Например, если данная переменная имеет отношение к объектному типу, то члены этого объекта перечислены внутри переменной (в виде древовидной структуры).
На рис. 10.32 показан пример окна Locals. В нем вы можете видеть приложение нашего примера, которое приостановлено внутри метода Customer.Get сервиса. Обратите внимание, что переменная клиента (с) развернута для того, чтобы показать различные свойства…