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


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

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

Debugging with call stacks on code maps

Что вам понадобится:

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

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

  2. После того как приложение войдет в режим останова или вы войдете в функцию, выберите "Карта кода". (Клавиатура: CTRL + SHIFT + `)

    Choose Code Map to start mapping call stack

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

    See call stack on code map

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

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

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

Add comment to call stack on code map

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

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

Update code map with next call stack

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

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

Дважды щелкните метод для просмотра его определения кода или используйте контекстное меню метода. (Клавиатура: выберите метод на карте и нажмите клавишу F12)

Go to code definition for a method on code map

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

Show fields in a method on call stack code map

Примечание.

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

Fields related to 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

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

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

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

    Display external code using the Call Stack window

    или отключите включение только моего кода в параметрах отладки Visual Studio:

    Show external code using Options dialog

  • Влияет ли изменение карты на код?

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

  • Что означает это сообщение: "Схема может быть основана на старой версии кода"?

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

  • Разделы справки управлять макетом карты?

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

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

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

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

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

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

    Share call stack code map with others

  • Разделы справки остановить добавление новых стеков вызовов автоматически?

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

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

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

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

    What do icons on the call stack code map mean?

    См.

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

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

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

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

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