Какова цель окна стека вызовов в Visual Studio?

какова цель окна стека вызовов в Visual Studio?

4 ответов


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

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

вот что это значит для операционной среды.

для разработчика практическая цель-помочь вам понять, почему ваша программа находится в том состоянии, в котором она находится. Всякий раз, когда выполнение программы останавливается в отладчике либо с помощью точки останова, либо с помощью исключения (в зависимости от настроек Visual Studio), у вас будет доступ к текущему стеку. Помните, что этот стек не показывает все методы, которые были вызваны до этого момента. Любой завершенный метод был удален из стека. Это не бревно.

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


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

просто попробуйте, поместите точку останова где-нибудь в коде (F9) запустите код, дождитесь попадания в точку останова и откройте окно стека. Вы увидите все звонки до текущей строки. Вы можете дважды щелкнуть каждую запись в окне трассировки стека, и курсор будет прыгать прямо на нее.

Если вам интересно: серые линии-это вызовы методов, из которых не загружается исходный код или символы. Вы можете щелкнуть правой кнопкой мыши эти строки и выбрать Загрузить символы для загрузки символов.


цель в стеке вызовов-позволить вам точно увидеть, какой вызов вызвал проблему.

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

при отладке в Visual Studio вы можете перемещаться вверх и вниз по стеку вызовов, чтобы увидеть, какие значения ваше приложение хранит на разных уровнях. Это полезно при отладке приложения должны на.


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