Pull to refresh

IntelliTrace или historical debugger в Visual Studio 2010

Reading time3 min
Views4.8K
Наверное, одним из самых интригующих нововведений в Visual Studio 2010 является IntelliTrace или как его представляли ранее historical debugger. И после релиза новой студии можно сложить свое мнение об этой возможности и ее практическом применении или необходимости – в общем, если быть кратким, нужно определится – зачем оно нам необходимо

Что такое IntelliTrace? Это новая фича, и соответственно новое окно при отладке, которое объединяет в себе обычную трассировку (output окно в Visual Studio), отладчик и стек вызовов. Т.е. такой себе микс уже существующих окон и соответственно возможностей – output + callstack + debugger = IntelliTrace.

image

IntelliTrace представляет собой окно, которое появляется при отладке или которое можно показать из Debug > Windows. При попадании в код (breakpoint, возникновение expcetion и т.п.) в нем показываются все эвенты, которые он записывает, в их числе exceptions, действия с элементами управления, обращения к БД и многие другие (посмотреть/включить/отключить их можно в опциях Tools > Options > IntelliTrace > IntelliTrace events). Самые новые события находятся внизу списка, и соответственно самые старые вверху. Событие Live event – это то где мы сейчас находимся «в коде» во время исполнения.

Выбрав определенное событие, можно перейти в то место кода где оно возникло, просмотреть стек вызовов и даже значения переменных (если выбран режим работы IntelliTrace events and call information).

image

Есть два режима работы:
— Event only (только события)
— Events and call information (события и информация о вызовах)

В последнем режиме в точке события фиксируется значения переменных. Переключится между ними можно в опциях как показано на скриншоте:

image

Там же в узле IntelliTrace events можно настроить на какие события стоит реагировать.

Итак все же нужен ли IntelliTrace? Это несомненно достаточно комфортное дополнение к уже существующим возможностям отладки, которое может значительно упростить отладку, например вызовы события UI элементов управления, обращения к базе, все можно легко увидеть и перейти к нему в коде. IntelliTrace может значительно упростить отладку или сделать ее комфортнее.

image

Производительность можно немного улучшить используя Event only режим и только изредка переключаясь в Events and call information, благо это можно сделать быстро из окна IntelliTrace. Также можно указать с каких конкретно модулей собирать информацию. По-умолчанию стоит опция, собирать со всех (collect data from all modules except following) кроме майкрософтовских, ее можно поменять на «собирать только со следующих» (collect data from only following modules).

image

Также IntelliTrace используется в новой системе тестирования — Microsoft Test And Lab Management. IntelliTrace добавляются к багам и разработчики позднее могут открыть их у себя на компьютере чтобы воспроизвести ситуацию в точности. Что делает работу с таким багом значительно удобнее. Причем даже если исходный код на машине разработчика отличается от записи — есть возможность при правильной настройке «pdb сервера», отлаживать код актуальной для бага версии.

Если подвести итог по IntelliTrace. Что мы имеем?

Плюсы:
+ Отладка становится комфортнее и более наглядной. Легче перехватить теперь например лишнии вызовы event хендлеров, обращения к базе, експешены и прочее, так как сохраняется стек вызовов, значения переменных (в режиме events and call information)
+ Тестирование. Взаимодействие тестировщика и разработчика. Теперь проще отлаживать баги так как имеем на руках дополнительную ниформацию в виде эвентов, их стеков и значений переменных. Интеграция со студией и Microsoft Test And Lab Management. Можно шарить iTrace файлы между разработчикам, компаниями.

Минусы:
— Доступен только в самой дорогой редакции студии — Ultimate
— Производительность. На простых приложениях запуска отладки происходит быстро, на сложных долго. Поэтому наверное придется выработать режим работы когда в основном отлаживаемся без IntelliTrace или в облегченном режиме events only а в исключительных случаях включаем тяжеловесный режим
— Только для x86 приложений
— Хотелось бы иметь больше эвентов и возможность расширять их своими.

Основной конек IntelliTrace — это как раз тестирование. Это позволяет в связке с Microsoft Test Manager и TFS создавать баги и прочие рабочие элементы в TFS с записью IntelliTrace данных в iTrace файл. Этим Майкрософт пыталась избавиться от багов, которые «не воспроизводятся». В этом плане, несомненно все получилось. Возможно, в будущем IntelliTrace будет развиваться и избавится от некоторых своих недостатков. Будем за этим следить.

Вот такой вот он IntelliTrace. Насколько преимущества сопоставимы с недостатками — это уже решит каждый исходя из своих задач и требований. Разработчикам еще придется выработать стиль работы с ним и каждому в отдельности определится использовать ли его, взвесив все плюсы и минусы.
Tags:
Hubs:
Total votes 47: ↑36 and ↓11+25
Comments17

Articles