Создание визуальной карты стека вызовов во время отладки (C#, Visual Basic, C++, JavaScript)

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

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

Важно!

Карты кода можно создавать только в выпуске Visual Studio Enterprise.

Вот краткий обзор карты кода.

Debugging with call stacks on code maps

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

  1. В проекте Visual Studio Enterprise C#, Visual Basic, C++ или JavaScript запустите отладку, выбрав Отладка>Начать отладку или нажав клавишу F5.

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

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

    See call stack on code map

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

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

Code Map Legend

Примечание.

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

Отображение внешнего кода

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

  • Щелкните правой кнопкой мыши в окне Стек вызовов и выберите в контекстном меню пункт Показать внешний код.

    Display external code using the Call Stack window

  • Или снимите флажок Включить только мой код, выбрав в Visual Studio Инструменты (или Отладка) >Параметры>Отладка.

    Show external code using Options dialog

Управление макетом карты

Изменение макета карты никак не влияет на код.

Для управления макетом карты используется меню Макет на панели инструментов карты.

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

  • Измените макет по умолчанию.
  • Остановить автоматическую перекомпоновку карты, отключив параметр Автоматически формировать макет при отладке.
  • Выполнить минимальную перекомпоновку карты при добавлении элементов, отключив параметр Последовательный макет.

Создание заметок о коде

Вы можете добавить комментарии для отслеживания операций, выполняемых в коде.

Чтобы добавить комментарий, щелкните правой кнопкой мыши карту кода и выберите Изменить>Новый комментарий, а затем введите комментарий.

Чтобы добавить новую строку в комментарий, нажмите клавиши SHIFT+ВВОД.

Add comment to call stack on code map

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

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

Update code map with next call stack

Чтобы остановить добавление новых стеков вызовов, выберите Show call stack on code map automatically на панели инструментов карты кода. Схема продолжит выделять существующие стеки вызовов. Чтобы вручную добавить текущий стек вызовов на карту, нажмите клавиши CTRL+SHIFT+`.

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

Теперь, когда у вас есть карта, при работе с C# или Visual Basic можно добавлять на нее элементы, такие как поля, свойства и методы, для отслеживания операций в коде.

Для перехода к определению метода в коде дважды щелкните метод на карте или выберите его и нажмите клавишу F12 либо щелкните его правой кнопкой мыши и выберите пункт Перейти к определению.

Go to code definition for a method on code map

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

Fields related to a method on call stack code map

Примечание.

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

Show fields in a method on call stack code map

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

See methods that use a field: call stack code map

Methods that use a field on call stack code map

Поиск ошибок с помощью карты

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

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

Add another call stack to code map

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

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

Add new method call to call stack on code map

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

Вы можете экспортировать карту, отправлять ее другим пользователям с помощью Microsoft Outlook, сохранять ее в решении и проверять в системе управления версиями.

Чтобы предоставить общий доступ к карте или сохранить карту, нажмите кнопку Поделиться на панели инструментов карты кода.

Share call stack code map with others