Поделиться через


Сопоставление методов в визуализации стека вызовов при отладке в Visual Studio

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

Отладка со стеками вызовов на картах кода

Требуется:

См. разделы Видеоролик: "Визуальная отладка с интеграцией отладчика сопоставления кода" (канал 9) • Map the call stack • Make notes about the code • Update the map with the next call stack • Add related code to the map • Find bugs using the map • Q & A

Сопоставление стека вызова

  1. Приступите к отладке. (клавиатура: F5)

  2. При переходе приложения в режим приостановки выполнения или при входе в определенную функцию выберите Карта кода. (Сочетание клавиш: CONTROL + SHIFT + `).

    Выберите "Карта кода", чтобы начать формирование карты для стека вызовов

    Текущий стек вызовов выделен в новом сопоставлении кода оранжевым цветом:

    См. стек вызовов на карте кода

    Эта карта будет автоматически обновляться в ходе отладки. См. раздел Update the map with the next call stack.

Добавление примечаний к коду

Добавьте комментарии для отслеживания операций, выполняемых в коде. Чтобы добавить новую строку в комментарий, нажмите клавиши SHIFT + Return.

Добавление комментария к стеку вызовов на карте кода

Обновление сопоставления путем добавления следующего стека вызовов

Выполните приложение до следующей точки останова или зайдите в функцию. В сопоставление будет добавлен новый стек вызовов.

Обновление карты кода следующим стеком вызовов

Добавление связанного кода в сопоставление

Итак, сопоставление готово. Что дальше? При работе с Visual C#, .NET или Visual Basic .NET добавьте в него элементы, такие как поля, свойства и методы, для отслеживания операций в коде.

Дважды щелкните метод для просмотра его определения кода. (Сочетание клавиш: выделите метод в сопоставлении и нажмите клавишу F12)

Переход к определению кода метода на карте кода

Добавьте элементы, которые необходимо отслеживать в сопоставлении.

Отображение полей в методе на карте кода со стеком вызовов

Поля, связанные с методом на карте кода со стеком вызовов

Нетрудно определить, какие методы используют одинаковые поля. Последние добавленные элементы отображаются зеленым цветом.

Продолжайте формировать сопоставление, чтобы увидеть дополнительный код.

См. методы, использующие поле: карта кода со стеком вызовов

Методы, использующие поле на карте кода со стеком вызовов

Поиск ошибок с помощью сопоставления

Визуализация кода поможет вам быстрее находить ошибки. Например, предположим, что вы ищите ошибку в программе для рисования. Когда вы создаете линию и пробуете отменить ее создание, ничего не происходит до тех пор, пока не будет нарисована следующая линия.

Установив точки останова, вы начинаете отладку и создаете сопоставление, аналогичное представленному ниже:

Добавление другого стека вызовов на карту кода

Учтите, что все жесты пользователя в сопоставлении вызывают метод Repaint, за исключением undo. Возможно, именно поэтому функция undo срабатывает не сразу.

Когда вы исправите ошибку и продолжите выполнение программы, в сопоставление будет добавлен новый вызов из undo в Repaint.

Добавление нового вызова метода в стек вызовов на карте кода

Вопросы и ответы

  • Не все вызовы отображаются в сопоставлении. Почему?

    По умолчанию в сопоставлении отображается только ваш код. Чтобы просмотреть внешний код, включите его в окне Стек вызовов или отключите режим Включить только мой код в параметрах отладки Visual Studio.

  • Изменение сопоставления влияет на код?

    Изменение сопоставления никак не влияет на код. Можно свободно переименовать, изменить или удалить любой элемент в сопоставлении.

  • Что означает сообщение: "Диаграмма может быть составлена с использованием более старой версии кода"?

    С момента последнего обновления сопоставления код мог измениться. Например, вызов в сопоставлении может уже не существовать в коде. Закройте сообщение, а затем попытайтесь повторить сборку решения, прежде чем повторно обновлять сопоставление.

  • Как управлять макетом сопоставления?

    Откройте меню Макет на панели инструментов сопоставления:

    • Измените макет по умолчанию.

    • Чтобы остановить автоматическую перекомпоновку сопоставления, отключите режим Автоматически формировать макет при отладке.

    • Для минимальной перекомпоновки сопоставления при добавлении элементов отключите режим Последовательный макет.

  • Можно ли использовать сопоставление совместно с другими пользователями?

    Сопоставление можно экспортировать, отправить его другим пользователям при наличии Microsoft Outlook или сохранить его в решении, чтобы можно было вернуть его в систему управления версиями Team Foundation.

    Предоставление другим пользователям доступа к карте кода со стеком вызовов

  • Как не допустить, чтобы сопоставление добавляло новые стеки вызова автоматически?

    Выберите Кнопка — автоматическое отображение стека вызовов на карте кода на панели инструментов сопоставления. Чтобы вручную добавить текущий стек вызовов в сопоставление, нажмите клавиши CONTROL + SHIFT + `.

    Существующие стеки вызовов по-прежнему будут выделяться на сопоставлении во время отладки.

  • Что означают значки элементов и стрелки?

    Чтобы получить дополнительные сведения об элементе, просмотрите подсказку элемента. Можно также ознакомиться с разделом Легенда, чтобы узнать, что означает каждый значок.

    Расшифровка значков на карте кода со стеком вызовов

См. разделы Map the call stack • Make notes about the code • Update the map with the next call stack • Add related code to the map • Find bugs using the map