[Статья нашего гостя] Советы и рекомендации по IntelliTrace. Основы. Часть 1. Автор: Колин Дембовский (Colin Dembovsky)

Рекомендации по применению IntelliTrace

Варианты применения инструмента IntelliTrace:

  1. Во время отладки в VS нажатием клавиши F5.
  2. В Test Manager (доступен как адаптер диагностических данных — Data Diagnostic Adapter).
  3. При запуске из любого места (использование автономного сборщика данных).

Описание «режимов работы» IntelliTrace

В IntelliTrace реализовано два стандартных режима с широкими возможностями: Events Only (Только события) и Events and Call Information (События и сведения о вызовах). Режим Events Only — упрощенный, он позволяет регистрировать «события», которые происходят во время выполнения вашей программы. Эти события представляют собой заслуживающие интереса «происшествия», например вызовы ASP.NET или ADO.NET, а также исключения. Группа разработки продукта постаралась записать события, которые помогут понять, как ваш код работает, и проследить длинные цепочки «причин и следствий».

Режим Events and Call Information — расширенный режим отладки, при котором помимо сведений, относящихся к режиму Events Only, регистрируются также вызовы методов (включая входящие и исходящие аргументы). Для подлежащих сбору данных установлены некоторые ограничения, иначе размер журналов будет просто огромным, даже больше, чем с настройками по умолчанию.

Использование клавиши F5 при работе с IntelliTrace

Этот вариант подходит для использования в процессе разработки кода. Это означает, что можно отлаживать приложение, перемещаясь вперед и назад в сеансе отладки, при этом нет необходимости останавливать приложение или добавлять точки останова. Активировать отладчик можно в настройках IntelliTrace: Tools -> Options (Сервис -> Параметры). Предусмотрено два режима:

clip_image001

После активации (в данном случае я включил режим Events and Call Information) отладчик готов к использованию. Понажимайте кнопки в своем приложении и щелкните ссылку Break All (Приостановить все) в VS в окне IntelliTrace:

clip_image002

(Я отлаживаю свое приложение Calculator. Нажимаю Break All (Приостановить все) и открывают журнал IntelliTrace.)

Изначально в журнале отображаются все произошедшие события. В нашем случае нажатия кнопок относятся к событиям типа Gesture (Жест), поэтому в журнале мы видим:

clip_image003

Предположим, что нечто странное произошло, когда я нажал «=», перемножая два числа. Перезапускать приложение нет необходимости, я могу просто нажать кнопку «=» после «*» (из записи в журнале видно, что я нажал 3 х 6 =). Я могу нажать это событие и «перемотать» до интересующего меня момента.

clip_image004

Сейчас я могу нажать Calls View (Представление вызовов) и приступить к просмотру журнала с этой точки.

clip_image005

Дважды щелкните вызов btnEqual_Click для перехода к этому моменту выполнения. Вы увидите глифы IntelliTrace во внутреннем поле окна исходного кода:

clip_image006

Если навести указатель мыши на значки, система выдаст подсказку. Функции появляются в следующем порядке:

· return to calling method

· step back

· step into

· step over

· return to Live Debugging

(Небольшая подсказка: при нажатии кнопки return to Live Debugging (Возврат к динамической отладке) внизу, вы перейдете к текущей точке отладчика, и для повторного запуска приложения следует опять нажать клавишу F5.)

Если вы нажмете F11, текущий указатель переместится вперед. Нажав эту кнопку дважды, я перешел к точке, где в программе стоит оператор Switch:

clip_image007

Обратите внимание: мне не придется гадать, какой именно оператор Case был выбран, достаточно посмотреть запись в журнале. Я также поставил метки для обработчиков наведения и убирания курсора мыши для val1 и val2, вы можете увидеть эти значения. Не все значения отслеживаются, но в данном случае это исходящие или входящие примитивы метода, поэтому IntelliTrace успешно регистрирует их значения.

Я опять нажму клавишу F11, чтобы войти в метод Multiply(), а затем еще раз, чтобы перейти к следующему событию:

clip_image008

Я перешел к закрывающейся фигурной скобке метода Multiply. В окне Autos показаны параметры val1 и val2 и их значения (3 и 6, соответственно), а также значение, возвращаемое методом (9).

Вуаля! 3–4 клика, и мы нашли ошибку в своей программе. И нам даже не пришлось задавать точку останова!

Фильтрация событий

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

clip_image009

Например, в выпадающем списке All Categories (Все категории) я могу выбрать фильтр, чтобы отображались только исключения:

clip_image010

Поиск строки

Также рекомендую использовать функцию поиска строки (Search For this line) или метода (Search For This Method). Вы подозреваете, что метод был выполнен во время отладки, но читать весь журнал нет времени? Никаких проблем! Щелкните правой кнопкой мыши строку (или метод) и выберите Search For This Line/Method in IntelliTrace (Поиск для этой строки/метода в IntelliTrace).

clip_image011

После чего вы увидите результаты поиска на панели в верхней части текущего окна кода. Используйте стрелки для перехода к предыдущему или следующему экземпляру этой строки или метода в файле журнала:

clip_image012

Я щелкну по значку стрелки сразу после слова Multiply, чтобы перейти к первому вызову этого метода в журнале и начать процесс «отладки» с этого места.

clip_image013

В следующей статье я расскажу вам, как запускать IntelliTrace из любого места.

Удачной отладки!