|
Программирование >> Программирование с использованием ajax
Точка останова с установленными дополнит£льными свойствами (вроде условия или количества прохождений) отображается несколько иначе. Вместо простого красного кружка сконфигурированная точка останова отображается в виде красного кружка, содержащего внутри выделенный белым цветом знак +. Это полезно, поскольку позволяет сразу видеть, какие точки останова будут сразу же приводить к переходу в режим Break, а какие - только при определенных обстоятельствах. Другие способы для перехода в режим останова Существуют еще два способа для перехода в режим Break. Первый подразумевает переход при выдаче необрабатываемого исключения, и будет описан позже в этой главе во время рассмотрения приемов обработки ошибок. Второй способ подразумевает переход в режим останова при генерации утверждения (assertion). Утверждениями называются такие инструкции, которые могут прерывать выполнение приложения с выдачей определенного пользователем сообщения. Они часто применяются во время разработки приложений для тестирования того, все ли работает гладко. Например, может потребоваться, чтобы в какой-то точке в приложении значение определенной переменной было меньше 10. С помощью утверждения можно удостовериться, что так оно и если, и прервать программу в противном случае. При генерации утверждения на выбор предлагается три действия: Abort (Прервать), которое завершает работу приложения; Retry (Повторить попытку), которое приводит к переходу в режим Break; и Ignore (Игнорировать), которое позволяет приложению продолжать работу обычным образом. Как и рассмотренные ранее функции для вывода отладочной информации, функция генерации утверждения имеет две версии: □ Debug.Assert О □ Trace.Assert О Отладочная версия компилируется только в отладочных сборках. Эти функции принимают три параметра. Первый представляет собой параметр Boolean, установка в false которого приводит к срабатыванию функции генерации утверждения. Второй и третий являются строковыми параметрами и отвечают за вывод информации, соответственно, во всплывающее диалоговое окно и окно Output. Для предыдущего примера вызов функции должен был бы выглядеть так: Debug.Assert(myVar < 10, myVar is 10 or greater. , Значение myVar равно или больше 10 Assertion occurred in Main(). ); Утверждения часто полезны на ранних стадиях адаптации приложения пользователем. Разработчик может включать в распространяемую среди пользователей рабочую версию своего приложения вызовы Trace.Assert () для наблюдения за происходящим. В случае генерации утверждения пользователь будет получать соответствующее уведомление. Информация об этом затем может пересылаться разработчику, а тот с ее помощью сможет определять, что было не так, даже если ему и не известно, как именно это случилось. Например, в первом строковом параметре разработчик может предоставлять краткое описание ошибки, а втором - инструкции касательно того, что делать дальше: Trace.Assert(myVar < 10, Variable out of bounds. , Переменная вышла за допустимые пределы Please contact vendor with the error code KCWOOl. ); Свяжитесь с поставщиком и сообщите о коде ошибки KCWOOl Если эта функция генерации утверждения сработает, пользователь увидит на экране диалоговое окно, показанное на рис. 7.13. А в л1ол РвГ1 с]: Abon-Ouit, R try4)ebuo. ignore-ConttniM Variable out of bounds. Ptoase contact vendor Hlh the erroi code KGMJOI. at PTogramJMatn(Strlna args) C:\Be (VCSharpCbap(efa7\AsseftlonOenioAssertkinOemoProgra m£i(14) at AppOomain. nExecUteAssembMAtsembly assembly. Strkngf] aro ) at AppOomain.ExecUteA sembly(Strmg assemblyf**. Evidence asMmbVSecurRy, StrlngCl args) at HostProcJbmUsersAstemblyO at Thre iIHelper.ThreadStaft Coniext(04ect stale) at ExecutionContextilun(EKecutlonContext eKecuUonConlext. ContextCaObacK ca ack. Object state) at ThreadHelper.ThrmdStaftO Abort I Retry j tflwore j Puc. 7.13. Диалоговое окно, отображаемое при срабатывании функции генерации утверждения Безусловно, данное окно не является особо дружественным по отношению к пользователю, поскольку в нем содержится масса информации, которая может сбивать с толку, но, получив такой снимок экрана, разработчику сможет быстро отыскать проблему. Теперь пришла пора узнать, что можно делать после остановки приложения и перехода в режим Break. Вообще переход в этот режим применяется для поиска ошибки в коде (или для получения уверенности в том, что все работает так, как надо). В режиме Break можно использовать самые разнообразные приемы, позволяющие анализировать код и точное состояние приложения в той точке, где оно было остановлено. Мониторинг содержимого переменных Мониторинг содержимого переменных является лишь одним примером того, как VS и VCE оказывают значительную помощь в отладке. Простейший способ для проверки значения переменной предусматривает наведение курсора мыши на ее имя в исходном коде, когда приложения находится в режиме Break. Это приводит к отображению всплывающей подсказки желтого цвета, содержащей информацию о переменной и ее текущем значении включительно. Подобным образом можно также выделять целые выражения и получать информацию об их результатах. Для сложных значений вроде массивов можно даже разворачивать записи в подсказке и просматривать отдельные детали элементов. Вы наверняка заметили, что при запуске приложения компоновка некоторых окон в IDE изменятся. По умолчанию во время выполнения, как правило, происходят следующие изменения (это поведение может немного отличаться, что зависит от каждой конкретной установки). □ Окно Properties исчезает вместе с некоторыми другими окнами, возможно, включая даже окно Solution Explorer. □ Окно Error List заменятся двумя новыми окнами, которые отображаются вдоль нижнего края окна IDE. □ В этих новых окнах отображается несколько новых вкладок. Новая компоновка показана на рис. 7.14. Данное представление может выглядеть не совсем так, как оно выглядит у вас на экране, т.е. некоторые вкладки и окна могут немного отличаться, но функциональные возможности, которые доступны в этих окнах и рассматриваются далее, будут в точности совпадать, а само представление, в принципе, можно настраивать любым желаемым образом как путем выбора в меню View (Вид) и Debug (Отладка) касающихся окон опций (в режиме Break), так и перетаскиванием окон по экрану для изменения их месторасположения. )4СМ7Г101 .Л- - г 4 . J V -J и., 2- >CAtic void Ramlsti iug() aigal I IB-IJ t t*riav - I Ч. 7, Ч. Z. 7. 3, 7, в, J. 9. 1, I InilJ wixV.lIndlcr; ir- amtVml - Иа. im itestAiiay. е\Л IndMeeH . . -.HiileLineC . V4l w 10- toosd tt MKVall. toccach (int index ,r MaxValIndirval COBMM.llrit.aLlna(in<lax i -ru .Pв.dKry(l, м(ln I int. 04r . out iDtll indic< IIUU Иг ........-5k Pwc. 7.7. Внешний вид окна IDE при запуске приложения Одно из новых окон, которое появляется в нижнем левом углу, особенно полезно для отладки. Оно позволяет наблюдать за значениями переменных в приложении в режиме Break. Доступные в нем вкладки в VS и VCE выглядят немного по-разному. □ Вкладка Autos (Автоматические). Доступна только в VS и отображает все переменные, которые используются в текущем и предшествующих ему операторах (<Ctrl+D>, <А>). □ Вкладка Locals (Локальные). Отображает все переменные, которые находятся в области видимости (<Ctrl+D>, <L>). □ Вкладка Watch N (Слежение N). Отображает выбранные переменные и выражения (где под N подразумевается одна из тех четырех версий, которые доступны в DebugWindowsWatch). Все эти вкладки работают более или менее одинаково, предлагая различные дополнительные средства в соответствии с функцией, которой они служат. В общем, каждая вкладка содержит список переменных вместе с информацией об имени, значении и типе каждой из них. Для более сложных переменных, наподобие массивов, предусмотрены символы разворачивания и сворачивания дерева (+ и -), которые отображаются слева от их имени и позволяют получать доступ к древовидному представлению их содержимого.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |