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


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

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

Дополнительные сведения о командах и действиях, которые можно использовать с картами кода, см. в статье "Обзор и изменение порядка карт кода".

Это важно

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

Ниже приведен краткий обзор карты кода:

Отладка с помощью стеков вызовов на кодовых картах

Отобразить стек вызовов

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

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

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

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

Карта кода обновляется автоматически по мере продолжения отладки. Изменение элементов карты или макета никак не влияет на код. Вы можете переименовать, переместить или удалить что-либо на карте.

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

Условные обозначения карты кода

Замечание

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

Сопоставление внешнего кода

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

  • Щелкните правой кнопкой мыши окно стека вызовов и выберите "Показать внешний код":

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

  • Или снимите флажок "Включить только мой код " в Visual Studio:

    Этот параметр доступен в области Инструменты (или Отладка) >Параметры в разделе Все параметры>Отладка>Общие:

    Снимок экрана: выбор параметра

    Этот параметр доступен в диалоговом окне "Параметры "Средства" (или "Отладка") > в разделе"Общие сведения об отладке>":

    Отображение внешнего кода с помощью диалогового окна "

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

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

Чтобы управлять макетом карты, выберите меню "Макет " на панели инструментов карты.

В меню макета можно:

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

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

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

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

Чтобы добавить новую строку в комментарий, нажмите Shift+Enter.

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

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

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

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

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

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

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

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

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

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

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

Замечание

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

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

Перейдите к созданию карты, чтобы увидеть больше кода.

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

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

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

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

Таким образом, вы устанавливаете точки останова в методах clear, undo и Repaint, запускаете отладку и создаете карту, подобную этой.

Добавить еще один стек вызовов к карте кода

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

После исправления ошибки и продолжения работы приложения карта добавляет новый вызов из undo в Repaint:

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

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

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

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

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