Проверка приложения с помощью исторической отладки IntelliTrace в Visual Studio (C#, Visual Basic, C++)
Историческая отладка позволяет переходить назад и вперед по выполнению приложения и проверять его состояние.
IntelliTrace можно использовать в выпуске Visual Studio Enterprise, но не в выпусках Professional или Community.
Перемещение по коду при выполнении исторической отладки
Начнем с простой программы, содержащей ошибку. В консольном приложении C# добавьте следующий код:
static void Main(string[] args)
{
int testInt = 0;
int resultInt = AddIterative(testInt);
Console.WriteLine(resultInt);
}
private static int AddIterative(int j)
{
for (int i = 0; i < 20; i++)
{
j = AddInt(j);
}
return j;
}
private static int AddInt(int add)
{
if (add == 10)
{
return add += 25;
}
return ++add;
}
Предположим, что ожидаемое значение resultInt
после вызова AddIterative()
— 20 (результат увеличения testInt
в 20 раз). (Также предполагается, что в AddInt()
нет ошибок). Но при этом возвращается результат 44. Как можно найти ошибку без обращения к AddIterative()
10 раз? Отладка с ведением журнала позволяет находить ошибки быстро и просто. Это делается следующим образом:
Последовательно выбрав Инструменты > Параметры > IntelliTrace > Общие, убедитесь, что инструмент IntelliTrace включен, а затем выберите события IntelliTrace и вызовите параметр информирования. Если этот параметр не выбран, область навигации отображаться не будет (как описано ниже).
Установите точку останова на строке
Console.WriteLine(resultInt);
.Запустите отладку. Код выполняется до точки останова. В окне Локальные можно увидеть, что значение
resultInt
равно 44.Откройте окно Средства диагностики (Отладка > Показать средства диагностики). Окно кода должно выглядеть следующим образом.
Рядом с левым полем непосредственно над точкой останова отображается двойная стрелка. Эта область называется областью навигации и используется для отладки с ведением журнала. Щелкните стрелку.
В окне кода предыдущая строка кода (
int resultInt = AddIterative(testInt);
) выделена розовым цветом. Над окном отображается сообщение, информирующее о включенном режиме отладки с ведением журнала.Теперь окно кода выглядит следующим образом.
Теперь можно выполнить шаг с заходом в метод
AddIterative()
(клавишей F11 или кнопкой Шаг с заходом в области навигации). Выполните шаг вперед (клавишей F10 или кнопкой Перейти к следующему вызову в области навигации). Теперь розовая строка находится на строкеj = AddInt(j);
. Нажатие клавиши F10 в этом случае выполняет переход к следующей строке кода. Вместо этого осуществляется вызов следующей функции. Отладка с ведением журнала переходит от вызова к вызову и пропускает строки кода, которые не включают вызов функции.Выполните шаг с заходом в метод
AddInt()
. Вы сразу же увидите ошибку в этом коде.
Связанный контент
В этой процедуре приведен лишь краткий обзор всех действий, выполняемых в рамках отладки с ведением журнала.
- Дополнительные сведения о просмотре моментальных снимков см. в разделе Проверка предыдущих состояний приложения с помощью IntelliTrace.
- Дополнительные сведения о различных параметрах и действиях кнопок в области навигации см. в разделе Возможности IntelliTrace.