2009-11-28 3 views
1

Представьте, что вам дано большое приятное приложение на C# с полным исходным кодом. Поэтому вы хотите выяснить, какие методы выполняются, когда вы выполняете пользовательское событие, например. нажмите кнопку или нажмите горячую клавишу или что угодно. Кодовая база настолько велика, что вам не хочется вручную искать соответствующую часть кода, например. отслеживание обработчика события для этой кнопки.Как использовать отладчик C# (или что-то еще) для проверки того, что происходит во время события GUI в приложении с открытым исходным кодом?

Ну, есть ли простой автоматизированный способ получения какого-либо журнала методов, выполняемых с момента времени T (т.е. когда я нажимаю кнопку)? Не могли бы вы объяснить и/или предоставить ссылки на статьи, посвященные конкретно этой ситуации?

+0

Обратите внимание на мое различие между покрытием кода и профилированием кода. – maxwellb

ответ

1

Список выполненных методов называется «охватом кода».

Есть инструменты под названием «анализаторы покрытия кода», которые регистрируют вызванные методы: это полезно при тестировании кода, когда у вас есть один или несколько тестовых примеров, и вы хотите знать, какие методы тестируют «покрытие».

Один из примеров такого инструмента для C# называется NCover: для ссылок на этот и другие инструменты, см. Code Coverage for C#/.net.

+0

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

0

Вы можете использовать C# Visual Studio Express и установить контрольную точку в коде, а затем использовать отладку по шагам из среды IDE. Вы также можете узнать, какой код выполняется при нажатии кнопки, дважды щелкнув кнопку в режиме конструктора. Это приведет вас к соответствующему коду, и вы можете просто поставить точку останова, а затем запустить приложение.

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

0

Я уверен, что кто-то может написать макрос, который будет программно добавлять точки останова для всех обработчиков событий !!

Visual Studio 2010 имеет вид иерархии метод, который reallly хорошо, но он не доступен в 2008

2

инструмент покрытия кода, который другие описывают, использует способность профиль кода. Основой инструмента покрытия кода является то, что он использует приложение профилировщик и запрограммирован на выполнение сопоставления исходного кода и подсчета количества строк как часть его профилирования. В случае .NET покрытие кода и другие инструменты профилирования будут использовать .NET Profiling API. Даже NCover.

Существуют другие инструменты, которые могут предоставить вам больше активности журнала, которую вы ищете, а не количество попаданий в линию. Вы даже можете работать над программированием собственного профилирующего приложения, которое может регистрироваться в специальном XML-файле, а затем подписывать его цифровой подписью, отметять его по времени и загружать в серверный процесс.

  • AQtime, похоже, обладает возможностями контроля потока и ведения журнала, которые вы могли бы искать.
  • Enterprise Architect от Sparx Systems включает в себя профилирующее приложение SSProfiler75.exe, которое находится за его возможностью «перепроектировать исходный код» в диаграммы последовательности.

Рассмотрим ищет код профилирования инструментов, а не просто код покрытия инструментов, которые являются одним примером использования профайлер.

 Смежные вопросы

  • Нет связанных вопросов^_^