Как вернуться на шаг назад visual studio
С помощью отладчика Visual Studio можно переходить по коду для проверки состояния приложения и просмотра последовательности выполнения. Для быстрого перехода к коду, который необходимо изучить, можно использовать сочетания клавиш, команды отладки, точки останова и другие функции. Если вы знакомы с командами и сочетаниями клавиш для навигации по отладчику, вы можете быстро и с легкостью находить и устранять проблемы в работе приложений.
Если вы не знакомы с процессом отладки кода, перед выполнением задач в этой статье рекомендуется прочесть документ, посвященный отладке для начинающих, и статью Методы и инструменты отладки.
В режиме приостановки выполнения выполнение приложения приостанавливается, но функции, переменные и объекты при этом остаются в памяти. Когда отладчик находится в режиме приостановки выполнения, можно перемещаться по коду. Существует два стандартных способа быстрого перехода в режим приостановки выполнения:
Начните пошаговое выполнение кода, нажав клавишу F10 или F11. Это позволит быстро найти точку входа приложения. После этого можно продолжать нажимать команды перехода для перемещения по коду.
Например, в редакторе кода в Visual Studio можно использовать команду Выполнить до текущей позиции, чтобы запустить приложение, присоединить отладчик и перейти в режим приостановки выполнения, а затем нажать клавишу F11 для перехода по коду:
В режиме приостановки выполнения можно переходить по коду, используя различные команды. Можно выполнять поиск ошибок и нарушений целостности данных, проверяя значения переменных. Для некоторых типов проектов можно также вносить корректировки в приложение.
Большинство окон отладчика, таких как Модули и Контрольные значения, доступны только тогда, когда отладчик присоединен к приложению. Некоторые возможности отладчика, такие как просмотр значений переменных в окне локальных переменных или вычисление выражений в окне контрольных значений, доступны только при приостановке отладчика (то есть в режиме приостановки выполнения).
Если во время приостановки выполнения кода не загружены исходные файлы или файлы символов (PDB), отладчик отображает страницу Исходный файл не найден или Символы не найдены, которая поможет найти и загрузить файлы. См. статью Указание файлов символов (.pdb) и файлов с исходным кодом в отладчике Visual Studio. Если вы не можете загрузить исходные файлы или файлы символов, можно выполнить отладку инструкций на языке ассемблера в окне Дизассемблирование.
Пошаговое прохождение кода
С помощью команд пошагового выполнения отладчика можно проверять состояние приложения или изучать его последовательность выполнения.
Построчное выполнение кода
Для остановки выполнения на каждом операторе во время отладки используйте команду Отладка > Шаг с заходом или нажмите клавишу F11.
Отладчик осуществляет пошаговое выполнение операторов кода, а не физических строк. Например, предложение if может быть записано в одной строке:
Но при пошаговом выполнении этой строки отладчик рассматривает условие как один шаг, а результат — как другой шаг. В предыдущем примере условие выполняется.
При вызове вложенных функций команда Шаг с заходом позволяет попасть в самую глубокую вложенную функцию. Например, если использовать Шаг с заходом на вызове Func1(Func2()) , отладчик заходит в функцию Func2 .
При выполнении каждой строки кода можно наводить указатель мыши на переменные, чтобы просматривать их значения, или использовать окна Локальные переменные и Контрольные значения для наблюдения за изменением значений. Кроме того, можно визуально отслеживать стек вызовов при выполнении шагов с заходом в функции. (Сведения, касающиеся только Visual Studio Enterprise, см. в статье Сопоставление методов в визуализации стека вызовов при отладке.)
Пошаговое прохождение кода и пропуск некоторых функций
При отладке можно пропустить функцию. Или, возможно, вы знаете, что некоторый код работает, например, хорошо протестированный код библиотеки. Чтобы пропустить код во время пошагового выполнения, можно использовать приведенные ниже команды. Функции по-прежнему выполняются, но отладчик пропускает их.
Команда с клавиатуры | Команда меню «Отладка» | Описание |
---|---|---|
F10 | Шаг с обходом | Если текущая строка содержит вызов функции, команда Шаг с обходом выполняет код, а затем останавливает выполнение в первой строке кода после возврата управления вызываемой функцией. |
SHIFT+F11 | Шаг с выходом | Команда Шаг с выходом возобновляет выполнение кода и приостанавливает выполнение, когда текущая функция возвращает управление. Отладчик пропускает текущую функцию. |
Выполнение до указанного места или функции
Вам может потребоваться выполнить код непосредственно до определенного места или функции, если вы точно знаете, какой код нужно проверить или с какого места следует начать отладку.
Выполнение до точки останова в коде
Чтобы задать простую точку останова в коде, щелкните в левом поле напротив строки кода, в которой нужно приостановить выполнение. Можно также выбрать строку и нажать клавишу F9, выбрать команду Отладка > Переключить точку останова или щелкнуть правой кнопкой мыши и выбрать команду Точка останова > Вставить точку останова. Точка останова отображается как красный кружок в левом поле рядом со строкой кода. Отладчик приостанавливает выполнение непосредственно перед выполнением строки.
Точки останова в Visual Studio предоставляют широкий набор функций, таких как условные точки останова и точки трассировки. Дополнительные сведения см. в статье Использование точек останова.
Выполнение до точки останова функции
Можно дать отладчику команду на выполнение до тех пор, пока не будет достигнута определенная функция. Можно задать функцию по имени или выбрать ее из стека вызовов.
Указание точки останова функции по имени
Выберите команду Отладка > Создать точку останова > Точка останова функции.
В диалоговом окне Новая точка останова функции введите имя функции и выберите ее язык:
Щелкните ОК.
Если функция перегружается или находится в нескольких пространствах имен, нужную функцию можно выбрать в окне Точки останова:
Выбор точки останова функции из стека вызовов
Во время отладки откройте окно Стек вызовов, выбрав пункт Отладка > Окна > Стек вызовов.
В окне Стек вызовов щелкните правой кнопкой мыши имя функции и выберите команду Выполнить до текущей позиции или нажмите клавиши CTRL+F10.
Сведения о визуальном отслеживании стека вызовов см. в статье Сопоставление методов в визуализации стека вызовов при отладке.
Выполнение до расположения курсора
Чтобы выполнить код до позиции курсора, в окне исходного кода или в окне Стек вызовов выберите строку, в которой нужно прервать выполнение, а затем щелкните ее правой кнопкой мыши и выберите команду Выполнить до текущей позиции или нажмите клавиши CTRL+F10. Выбор команды Выполнить до текущей позиции аналогичен заданию временной точки останова.
Принудительное выполнение до расположения курсора
Чтобы выполнить код до позиции курсора, в окне исходного кода или в окне Стек вызовов выберите строку, в которой нужно прервать выполнение, а затем щелкните ее правой кнопкой мыши и выберите элемент Force Run To Cursor (Принудительное выполнение до расположения курсора). Если выбрать параметр Force Run To Cursor (Принудительное выполнение до расположения курсора), все точки останова и первичные исключения будут пропускаться, пока отладчик не достигнет строки кода, где находится курсор.
Выполнение до щелкнутого
Во время приостановки работы отладчика можно навести указатель мыши на оператор в исходном коде или в окне Дизассемблирование и щелкнуть значок с зеленой стрелкой Выполнить до этого места. Если используется команда Выполнение до щелкнутого позволяет не устанавливать временную точку останова.
Команда Выполнение до щелкнутого доступна начиная с версии Visual Studio 2017.
Принудительное выполнение до щелчка
Когда работа отладчика приостановлена, вы можете навести указатель на оператор в исходном коде, удерживая нажатой клавишу SHIFT, и выбрать элемент Принудительное выполнение до текущей позиции (значок с двумя зелеными стрелками). При выборе этого параметра приложение присоединяет отладчик Visual Studio и приостанавливает выполнение в положении курсора. Все точки останова и первичные исключения, обнаруженные во время выполнения, временно отключаются.
Параметр Force Run to Click (Принудительное выполнение до отмеченного щелчком расположения) доступен, начиная с версии Visual Studio 2022.
Приостановка выполнения кода вручную
Чтобы приостановить выполнение в следующей доступной строке кода в выполняющемся приложении, выберите команду Отладка > Прервать все или нажмите клавиши CTRL+ALT+BREAK.
Перемещение указателя для изменения потока выполнения
Когда работа отладчика приостановлена, желтая стрелка в поле исходного кода или в окне Дизассемблированный код отмечает расположение оператора, который должен быть выполнен следующим. Вы можете изменить следующий оператор, который будет выполняться, переместив эту стрелку. Можно пропустить код или вернуться к предыдущей строке. Перемещение указателя полезно при возникновении таких ситуаций, как пропуск кода, содержащего известную ошибку.
Для изменения оператора, который будет выполнен следующим, отладчик должен находиться в режиме приостановки выполнения. В окне исходного кода или окне Дизассемблированный код перетащите желтую стрелку в другую строку или щелкните правой кнопкой мыши строку, которую нужно выполнить следующей, и выберите команду Задать следующий оператор.
Счетчик программы переходит непосредственно к новому расположению. Инструкции между старой и новой точками не выполняются. Однако при перемещении точки выполнения обратно промежуточные инструкции не отменяются.
Отладка кода, не являющегося пользовательским
По умолчанию отладчик пытается выполнить отладку только кода вашего приложения, так как включена функция Только мой код. Подробнее о том, как эта функция работает с проектами различных типов и на разных языках, а также о том, как настроить ее, см. в статье Только мой код.
Для просмотра кода платформы, кода сторонней библиотеки или системных вызовов во время отладки можно отключить функцию "Только мой код". В меню Сервис (или Отладка) выберите пункты Параметры > Отладка и снимите флажок Включить только мой код. Когда функция "Только мой код" отключена, в окнах отладчика отображается код, не являющийся пользовательским, и отладчик может выполнять его по шагам.
Режим "Только мой код" не поддерживается для проектов устройств.
Отладка системного кода
Если вы загрузили отладочные символы для системного кода Майкрософт и отключили режим "Только мой код", можно производить шаг с заходом в системный вызов так же, как в любой другой вызов.
Чтобы загрузить символы для определенного системного компонента, выполните указанные ниже действия.
Во время отладки откройте окно Модули, выбрав пункт Отладка > Окна > Модули или нажав клавиши CTRL+ALT+U.
Определить, для каких модулей символы загружены, можно по значению в столбце Состояние символов в окне Модули. Щелкните правой кнопкой мыши модуль, для которого требуется загрузить символы, и выберите команду Загрузить символы.
Шаг с заходом в свойства и операторы в управляемом коде
По умолчанию отладчик обходит свойства и операторы при пошаговом выполнении в управляемом коде. В большинстве случаев это повышает удобство и эффективность отладки. Чтобы отключить пошаговое выполнение свойств и операторов, выберите пункт Отладка > Параметры. На странице Отладка > Общие снимите флажок Обход свойств и операторов (только управляемый код) .
Функция возврата на шаг назад в IntelliTrace автоматически создает моментальный снимок вашего приложения для каждого события точки останова и шага отладчика. Используя записанные моментальные снимки, вы можете возвращаться к этим точкам останова и шагам, просматривая предыдущее состояние приложения. Возможность возврата на шаг назад в IntelliTrace позволяет сэкономить время в тех случаях, когда вам нужно просмотреть предыдущее состояние приложения, но не требуется перезапускать отладку или воссоздавать необходимое состояние приложения.
В этом руководстве рассмотрены следующие задачи:
- Включение моментальных снимков и событий IntelliTrace
- Навигация между событиями с использованием команд для перехода на шаг назад и вперед
- Просмотр моментальных снимков событий
Включение режима событий и моментальных снимков IntelliTrace
Откройте проект в Visual Studio Enterprise.
Выберите Сервис > Параметры > IntelliTrace, а затем — События и моментальные снимки IntelliTrace.
Начиная с Visual Studio 2017 Enterprise 15.9 (предварительная версия 2), этот параметр называется Моментальные снимки IntelliTrace (управляемый и машинный код).
Чтобы настроить параметры просмотра моментальных снимков при исключениях, выберите IntelliTrace > Дополнительно в диалоговом окне Параметры.
Эти параметры доступны, начиная с Visual Studio 2017 Enterprise версии 15.7.
Если включены события и моментальные снимки, также по умолчанию включается создание моментальных снимков при исключениях. Чтобы отключить эту возможность, снимите флажок Сбор моментальных снимков для событий исключения. Если эта функция включена, для необработанных исключений будут создаваться моментальные снимки. Для обработанных исключений моментальные снимки создаются только в том случае, если создаваемое исключение не является повтором ранее вызванного исключения. В раскрывающемся списке вы можете задать максимальное количество моментальных снимков, создаваемых при исключениях. Это ограничение применяется каждый раз, когда приложение переходит в режим приостановки выполнения (например, при попадании в точку останова для приложения).
Моментальные снимки создаются только для тех событий исключения, которые являются записями IntelliTrace. Для управляемого кода можно задать регистрируемые IntelliTrace события. Для этого необходимо выбрать Сервис > Параметры > События IntelliTrace.
В проекте задайте одну или несколько точек останова и запустите отладку (нажмите клавишу F5) либо запустите отладку в пошаговом режиме (клавиша F10 или F11).
IntelliTrace будет создавать моментальный снимок процесса приложения для каждого шага отладчика, события точки останова или необработанного события исключения. Эти события записываются на вкладке События в окне Средства диагностики наряду с другими событиями IntelliTrace. Чтобы открыть это окно, выберите Отладка > Окна > Отображение средств диагностики.
Рядом с событиями, для которых доступны моментальные снимки, отображается значок камеры.
В целях оптимизации производительности при слишком малом интервале между шагами отладки моментальные снимки не создаются. Если рядом с шагом не отображается значок камеры, попробуйте сделать временной интервал между шагами немного больше.
Переход между моментальными снимками и их просмотр
Для перехода между событиями используйте кнопки На шаг назад (ALT+[) и На шаг вперед (Alt+]) в панели инструментов "Отладка".
С помощью этих кнопок можно перейти к событиям, которые отображаются на вкладке События в окне Средства диагностики. При переходе на шаг назад или вперед к событию автоматически активируется отладка с ведением журнала для выбранного события.
В этом представлении вы можете проверить значения в окнах Стек вызовов, Локальные, Видимые и Контрольные значения. Кроме того, вы можете просматривать подсказки по данным, наводя указатель мыши на переменные, а также вычислять выражения в окне Интерпретация. Отображаемые данные поступают из моментального снимка процесса приложения, созданного на рассматриваемый момент времени.
Например, если после попадания в точку останова вы выполнили шаг отладки (клавиша F10), при нажатии кнопки На шаг назад среда Visual Studio переключится в режим отладки с ведением журнала в строке кода, соответствующей точке останова.
Чтобы вернуться к отладке в режиме реального времени, выберите Продолжить (F5) или щелкните ссылку Вернуться к динамической отладке в информационной панели.
Вы также можете просмотреть снимок на вкладке События. Для этого выберите событие со снимком и нажмите Активировать отладку с ведением журнала.
В отличие от команды Следующая инструкция при просмотре моментального снимка не осуществляется повторное выполнение кода. В этом случае вы получаете статическое представление состояния приложения на момент времени в прошлом.
Подробнее о проверке переменных в Visual Studio см. в описании возможностей отладчика.
Вопросы и ответы
Чем функция возврата на шаг назад IntelliTrace отличается от режима "Только для событий IntelliTrace"?
В режиме "Только для событий IntelliTrace" вы не можете активировать отладку с ведением журнала для шагов и точек останова отладчика. Тем не менее IntelliTrace будет регистрировать данные в окнах Локальные и Видимые только в том случае, если эти окна открыты. При этом будут записываться только те данные, которые развернуты и находятся в представлении. В режиме "Только для событий" зачастую отсутствует полное представление о состоянии переменных и составных объектов. Кроме того, не поддерживается возможность вычисления выражений и просмотра данных в окне контрольных значений.
В режиме событий и моментальных снимков IntelliTrace записывает моментальный снимок всего процесса приложения, включая составные объекты. В строке кода вы увидите ту же информацию, что и при попадании в точку останова (независимо от того, была ли ранее развернута эта информация). Кроме того, при просмотре моментальных снимков поддерживается вычисление выражений.
Как эта функция влияет на производительность?
Влияние на общую производительность пошаговой отладки зависит от приложения. Создание моментального снимка занимает примерно 30 мс. При создании моментального снимка процесс разветвляется, а ответвленная копия приостанавливается. При просмотре моментального снимка Visual Studio присоединяет ответвленную копию процесса. Для каждого моментального снимка Visual Studio копирует только таблицу страниц и присваивает страницам атрибуты копирования при записи. Если объекты в куче изменяются между шагами отладчика, с которыми связаны моментальные снимки, соответствующая таблица страниц копируется, в результате чего потеря памяти будет минимальной. Если Visual Studio обнаруживает нехватку памяти для создания моментального снимка, снимок сделан не будет.
Известные проблемы
Если при работе в режиме событий и моментальных снимков IntelliTrace в версиях Windows, предшествующих Windows 10 Fall Creators Update (RS3), в качестве целевой платформы отладки для приложения задана платформа x86, IntelliTrace не будет создавать моментальные снимки.
- Если вы работаете в Windows 10 Anniversary Update (RS1) и ниже версии 10.0.14393.2273, установите решение из статьи KB4103720.
- Если вы работаете в Windows 10 Creators Update (RS2) и ниже версии 10.0.15063.1112, установите решение из статьи KB4103722.
- Установите Windows 11 или Windows 10 с обновлением Fall Creators Update (RS3) или выполните обновление до соответствующей версии.
- Еще один вариант:
Установите набор инструментов VC++ 2015.3 версии 140 для классического компонента (x86, x64) из установщика Visual Studio.
Выполните сборку целевого приложения.
Воспользуйтесь средством editbin в командной строке, чтобы установить флаг Largeaddressaware для целевого исполняемого файла. Например, после обновления пути можно использовать следующую команду: "C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\VC\Tools\MSVC\14.12.25718\bin\Hostx86\x86\editbin.exe" /Largeaddressaware "C:\Path\To\Application\app.exe".
Чтобы начать отладку, нажмите клавишу F5. Теперь моментальные снимки создаются для шагов и точек останова отладчика.
Флаг Largeaddressaware необходимо устанавливать каждый раз, когда выполняется повторное построение исполняемого файла после внесения изменений.
При создании моментального снимка процесса для приложения, которое использует сохраненный отображенный в память файл, процесс с моментальным снимком удерживает монопольную блокировку отображенного в память файла даже после того, как родительский процесс снимет блокировку. В результате другие процессы по-прежнему могут считывать отображенный в память файл, но не могут осуществлять запись в него.
Инструкции по решению:
- По окончании сеанса отладки удалите все моментальные снимки.
При сохранении файла с помощью команды Отладка > IntelliTrace > Сохранить сеанс IntelliTrace в режиме событий и моментальных снимков дополнительные данные, полученные из моментальных снимков, будут недоступны в файле .itrace. Для событий точки останова и шага отображается та же информация, как и в случае сохранения файла в режиме IntelliTrace только для событий.
Дальнейшие действия
Из этого руководства вы узнали, как использовать функцию возврата на шаг назад IntelliTrace. Ознакомьтесь с дополнительными материалами, посвященными другим возможностям IntelliTrace.
Сочетания клавиш позволяют получать доступ к различным командам и окнам Visual Studio. В этом разделе перечислены сочетания клавиш по умолчанию для команд в профиле обычных параметров, который мог быть выбран при установке Visual Studio. Независимо от выбранного профиля сочетание клавиш для той или иной команды можно определить, открыв диалоговое окно Параметры, развернув узел Среда и выбрав элемент Клавиатура. Кроме того, сочетания клавиш можно настраивать, назначая командам другие сочетания клавиш.
Список распространенных сочетаний клавиш и другие сведения о средствах повышения производительности см. в следующих статьях:
Памятка по быстрым клавишам для печати
Популярные сочетания клавиш в Visual Studio
Все сочетания клавиш в этом разделе применяются глобально, если не указано иное. Глобальный контекст означает, что сочетание применяется в любом окне инструментов в Visual Studio.
Сочетание клавиш для той или иной команды можно определить, открыв диалоговое окно Параметры, развернув узел Среда и выбрав элемент Клавиатура.
Сборка: популярные сочетания клавиш
Отладка: популярные сочетания клавиш
Команды | Сочетания клавиш [специальные контексты] | Идентификатор команды |
---|---|---|
Прерывание на функции | CTRL+B | Debug.BreakatFunction |
Приостановить все | CTRL+ALT+BREAK | Debug.BreakAll |
Удаление всех точек останова | CTRL+SHIFT+F9 | Debug.DeleteAllBreakpoints |
Исключения | CTRL+ALT+E | Debug.Exceptions |
Быстрая проверка | CTRL+ALT+Q |
Редактирование: популярные сочетания клавиш
Команды | Сочетания клавиш [специальные контексты] | Идентификатор команды |
---|---|---|
Разрыв строки | ВВОД [текстовый редактор, конструктор отчетов, конструктор Windows Forms] |
или CTRL+ПРОБЕЛ [текстовый редактор, конструктор рабочих процессов]
или CTRL+K, W [конструктор рабочих процессов]
или SHIFT+DELETE [схема последовательностей, схема действий UML, схема слоев]
или CTRL+K, CTRL+L [конструктор рабочих процессов]
или CTRL+K, CTRL+P [конструктор рабочих процессов]
или SHIFT + ALT + BACKSPACE
Файл: популярные сочетания клавиш
Команды | Сочетания клавиш [специальные контексты] | Идентификатор команды |
---|---|---|
Выход | ALT+F4 | File.Exit |
Создание файла | CTRL+N | File.NewFile |
Новый проект | CTRL+SHIFT+N | File.NewProject |
Новый веб-сайт | SHIFT+ALT+N | File.NewWebSite |
Открывает файл | CTRL+O | File.OpenFile |
Открытие проекта | CTRL+SHIFT+O | File.OpenProject |
Открыть веб-сайт | Shift+Alt+O | File.OpenWebSite |
Переименовать | F2 [Team Explorer] | File.Rename |
Сохранить все | CTRL+SHIFT+S | File.SaveAll |
Сохранить выбранные элементы | CTRL+S | File.SaveSelectedItems |
Просмотр в браузере | CTRL+SHIFT+W | File.ViewinBrowser |
Проект: популярные сочетания клавиш
Команды | Сочетания клавиш [специальные контексты] | Идентификатор команды |
---|---|---|
Добавить существующий элемент | SHIFT+ALT+A | Project.AddExistingItem |
Добавление нового элемента | CTRL+SHIFT+A | Project.AddNewItem |
Рефакторинг: популярные сочетания клавиш
Команда | Сочетание клавиш [специальные контексты] | Идентификатор команды |
---|---|---|
Извлечение метода | CTRL+R, CTRL+M | Refactor.ExtractMethod |
Средства: популярные сочетания клавиш
Команда | Сочетание клавиш [специальные контексты] | Идентификатор команды |
---|---|---|
Присоединение к процессу | CTRL+ALT+P | Tools.AttachtoProcess |
Представление: популярные сочетания клавиш
Команды | Сочетания клавиш [специальные контексты] | Идентификатор команды |
---|---|---|
Окно классов | CTRL+SHIFT+C | View.ClassView |
Изменить метку | F2 | View.EditLabel |
Список ошибок | CTRL+\, CTRL+E |
Окно: популярные сочетания клавиш
Команды | Сочетания клавиш [специальные контексты] | Идентификатор команды |
---|---|---|
Активировать окно документа | ESC | Window.ActivateDocumentWindow |
Закрыть окно документа | CTRL+F4 | Window.CloseDocumentWindow |
Следующее окно документа | CTRL+F6 | Window.NextDocumentWindow |
Следующая панель навигации окна документа | CTRL+TAB | Window.NextDocumentWindowNav |
Следующая область разделения | F6 | Window.NextSplitPane |
Глобальные сочетания клавиш
Следующие сочетания клавиш являются глобальными. Это означает, что их можно использовать в любом окне Visual Studio, которое находится в фокусе.
Анализ: глобальные сочетания клавиш
Команды | Сочетания клавиш | Идентификатор команды |
---|---|---|
Перейти назад | SHIFT+ALT+3 | Analyze.NavigateBackward |
Перейти вперед | SHIFT+ALT+4 | Analyze.NavigateForward |
Архитектура: глобальные сочетания клавиш
Команды | Сочетания клавиш | Идентификатор команды |
---|---|---|
Создать схему | CTRL+\, CTRL+N | Architecture.NewDiagram |
Команды | Сочетания клавиш | Идентификатор команды |
---|---|---|
Повторить операцию скрипта мобильной службы | CTRL+NUM *, CTRL+R | WindowsAzure.RetryMobileServiceScriptOperation |
Показать сведения об ошибке скрипта мобильной службы | CTRL+NUM *, CTRL+D | WindowsAzure.ShowMobileServiceScriptErrorDetails |
Сборка: глобальные сочетания клавиш
Контекстные меню представления классов: глобальные сочетания клавиш
Команды | Сочетания клавиш | Идентификатор команды |
---|---|---|
Свойства | ALT+ВВОД | ClassViewContextMenus.ClassViewMultiselectProjectreferencesItems.Properties |
Отладка: глобальные сочетания клавиш
Контекстные меню отладчика: глобальные сочетания клавиш
Команды | Сочетания клавиш | Идентификатор команды |
---|---|---|
Удалить | ALT+F9, D | DebuggerContextMenus.BreakpointsWindow.Delete |
Перейти к дизассемблированию | ALT+F9, A | DebuggerContextMenus.BreakpointsWindow.GoToDisassembly |
Перейти к исходному коду | ALT+F9, S | DebuggerContextMenus.BreakpointsWindow.GoToSourceCode |
Центр диагностики: глобальные сочетания клавиш
Команда | Сочетание клавиш | Идентификатор команды |
---|---|---|
Остановка сбора | CTRL+ALT+F2 | DiagnosticsHub.StopCollection |
Редактирование: глобальные сочетания клавиш
Команды | Сочетания клавиш | Идентификатор команды |
---|---|---|
Копировать | CTRL+C |
CTRL+SHIFT+Z
Контекстные меню редактора: глобальные сочетания клавиш
Команды | Сочетания клавиш | Идентификатор команды |
---|---|---|
Условия точки останова | ALT+F9, C | EditorContextMenus.CodeWindow.Breakpoint.BreakpointConditions |
Метки изменения точки останова | ALT+F9, L | EditorContextMenus.CodeWindow.Breakpoint.BreakpointEditlabels |
Вставка временной точки останова | SHIFT+ALT+F9, T | EditorContextMenus.CodeWindow.Breakpoint.InsertTemporaryBreakpoint |
Показать элемент | CTRL+` | EditorContextMenus.CodeWindow.CodeMap.ShowItem |
Execute | CTRL+ALT+F5 | EditorContextMenus.CodeWindow.Execute |
Перейти к представлению | CTRL+M, CTRL+G | EditorContextMenus.CodeWindow.GoToView |
Переключить файл заголовков кода | CTRL+K, CTRL+O (латинская буква O) | EditorContextMenus.CodeWindow.ToggleHeaderCodeFile |
Просмотр иерархии вызовов | CTRL+K, CTRL+T |
Файл: глобальные сочетания клавиш
Команды | Сочетания клавиш | Идентификатор команды |
---|---|---|
Выход | ALT+F4 | File.Exit |
Создание файла | CTRL+N | File.NewFile |
Новый проект | CTRL+SHIFT+N | File.NewProject |
Новый веб-сайт | SHIFT+ALT+N | File.NewWebSite |
Открывает файл | CTRL+O (латинская буква O) | File.OpenFile |
Открытие проекта | CTRL+SHIFT+O (латинская буква O) | File.OpenProject |
Открыть веб-сайт | SHIFT+ALT+O (латинская буква O) | File.OpenWebSite |
Печать | CTRL+P | File.Print |
Сохранить все | CTRL+SHIFT+S | File.SaveAll |
Сохранить выбранные элементы | CTRL+S | File.SaveSelectedItems |
Просмотр в браузере | CTRL+SHIFT+W | File.ViewinBrowser |
Справка: глобальные сочетания клавиш
Команды | Сочетания клавиш | Идентификатор команды |
---|---|---|
Добавить и удалить содержимое справки | CTRL+ALT+F1 | Help.AddandRemoveHelpContent |
Справка F1 | F1 | Help.F1Help |
Посмотреть справку | CTRL+F1 | Help.ViewHelp |
Справка окна | SHIFT+F1 | Help.WindowHelp |
Нагрузочный тест: глобальные сочетания клавиш
Команда | Сочетание клавиш | Идентификатор команды |
---|---|---|
Перейти в область счетчиков | CTRL+R, Q | LoadTest.JumpToCounterPane |
Другие контекстные меню: глобальные сочетания клавиш
Команда | Сочетание клавиш | Идентификатор команды |
---|---|---|
Добавить новую диаграмму | Вставить | OtherContextMenus.MicrosoftDataEntityDesignContext.AddNewDiagram |
Проект: глобальные сочетания клавиш
Команды | Сочетания клавиш | Идентификатор команды |
---|---|---|
Добавить существующий элемент | SHIFT+ALT+A | Project.AddExistingItem |
Добавление нового элемента | CTRL+SHIFT+A | Project.AddNewItem |
Мастер классов | CTRL+SHIFT+X | Project.ClassWizard |
Переопределение | CTRL+ALT+INS | Project.Override |
Предварительный просмотр изменений | ALT+; затем ALT+C | Project.Previewchanges |
Опубликовать выбранные файлы | ALT+; затем ALT+P | Project.Publishselectedfiles |
Заменить выбранные файлы с сервера | ALT+; затем ALT+R | Project.Replaceselectedfilesfromserver |
Контекстные меню проекта и решения: глобальные сочетания клавиш
Команды | Сочетания клавиш | Идентификатор команды |
---|---|---|
Переместить вниз | ALT+СТРЕЛКА ВНИЗ | ProjectandSolutionContextMenus.Item.MoveDown |
Переместить вверх | ALT+СТРЕЛКА ВВЕРХ | ProjectandSolutionContextMenus.Item.MoveUp |
Рефакторинг: глобальные сочетания клавиш
Команды | Сочетания клавиш | Идентификатор команды |
---|---|---|
Инкапсуляция поля | CTRL+R, CTRL+E | Refactor.EncapsulateField |
Извлечение интерфейса | CTRL+R, CTRL+I | Refactor.ExtractInterface |
Извлечение метода | CTRL+R, CTRL+M | Refactor.ExtractMethod |
Удалить параметры | CTRL+R, CTRL+V | Refactor.RemoveParameters |
Переименовать | CTRL+R, CTRL+R | Refactor.Rename |
Упорядочить параметры | CTRL+R, CTRL+O (латинская буква O) | Refactor.ReorderParameters |
Обозреватель решений: глобальные сочетания клавиш
Команды | Сочетания клавиш | Идентификатор команды |
---|---|---|
Открыть фильтр файлов | CTRL+[ , O (латинская буква O) |
Команда: глобальные сочетания клавиш
Команды | Сочетания клавиш | Идентификатор команды |
---|---|---|
Перейти к веткам Git | CTRL+0 (ноль), CTRL+N |
Контекстные меню Team Foundation: глобальные сочетания клавиш
Команды | Сочетания клавиш | Идентификатор команды |
---|---|---|
Перейти к сборкам | CTRL+0 (ноль), CTRL+B |
Тестирование: глобальные сочетания клавиш
Обозреватель тестов: глобальные сочетания клавиш
Средства: глобальные сочетания клавиш
Команды | Сочетания клавиш | Идентификатор команды |
---|---|---|
Присоединение к процессу | CTRL+ALT+P | Tools.AttachtoProcess |
Диспетчер фрагментов кода | CTRL+K, CTRL+B | Tools.CodeSnippetsManager |
Принудительная сборка мусора | CTRL+SHIFT+ALT+F12, CTRL+SHIFT+ALT+F12 | Tools.ForceGC |
Представление: глобальные сочетания клавиш
Окно: глобальные сочетания клавиш
Команды | Сочетания клавиш | Идентификатор команды |
---|---|---|
Активировать окно документа | ESC | Window.ActivateDocumentWindow |
Добавить вкладку в выделенный фрагмент | CTRL+SHIFT+ALT+ПРОБЕЛ | Window.AddTabtoSelection |
Закрыть окно документа | CTRL+F4 | Window.CloseDocumentWindow |
Закрыть окно инструментов | SHIFT+ESC | Window.CloseToolWindow |
Не закрывать вкладку | CTRL+ALT+HOME | Window.KeepTabOpen |
Перейти к панели навигации | CTRL+F2 | Window.MovetoNavigationBar |
Следующее окно документа | CTRL+F6 | Window.NextDocumentWindow |
Следующая панель навигации окна документа | CTRL+TAB | Window.NextDocumentWindowNav |
Следующая область | ALT+F6 | Window.NextPane |
Следующая область разделения | F6 | Window.NextSplitPane |
Следующая вкладка | CTRL+ALT+PGDN |
Сочетания клавиш, зависящие от контекста
Эти сочетания клавиш зависят от контекста. Это означает, что вы можете использовать их с меню и элементами в Visual Studio, которые относятся к типу проекта, языку программирования или платформе.
Функция возврата на шаг назад в IntelliTrace автоматически создает моментальный снимок вашего приложения для каждого события точки останова и шага отладчика. Используя записанные моментальные снимки, вы можете возвращаться к этим точкам останова и шагам, просматривая предыдущее состояние приложения. Возможность возврата на шаг назад в IntelliTrace позволяет сэкономить время в тех случаях, когда вам нужно просмотреть предыдущее состояние приложения, но не требуется перезапускать отладку или воссоздавать необходимое состояние приложения.
В этом руководстве рассмотрены следующие задачи:
- Включение моментальных снимков и событий IntelliTrace
- Навигация между событиями с использованием команд для перехода на шаг назад и вперед
- Просмотр моментальных снимков событий
Включение режима событий и моментальных снимков IntelliTrace
Откройте проект в Visual Studio Enterprise.
Выберите Сервис > Параметры > IntelliTrace, а затем — События и моментальные снимки IntelliTrace.
Начиная с Visual Studio 2017 Enterprise 15.9 (предварительная версия 2), этот параметр называется Моментальные снимки IntelliTrace (управляемый и машинный код).
Чтобы настроить параметры просмотра моментальных снимков при исключениях, выберите IntelliTrace > Дополнительно в диалоговом окне Параметры.
Эти параметры доступны, начиная с Visual Studio 2017 Enterprise версии 15.7.
Если включены события и моментальные снимки, также по умолчанию включается создание моментальных снимков при исключениях. Чтобы отключить эту возможность, снимите флажок Сбор моментальных снимков для событий исключения. Если эта функция включена, для необработанных исключений будут создаваться моментальные снимки. Для обработанных исключений моментальные снимки создаются только в том случае, если создаваемое исключение не является повтором ранее вызванного исключения. В раскрывающемся списке вы можете задать максимальное количество моментальных снимков, создаваемых при исключениях. Это ограничение применяется каждый раз, когда приложение переходит в режим приостановки выполнения (например, при попадании в точку останова для приложения).
Моментальные снимки создаются только для тех событий исключения, которые являются записями IntelliTrace. Для управляемого кода можно задать регистрируемые IntelliTrace события. Для этого необходимо выбрать Сервис > Параметры > События IntelliTrace.
В проекте задайте одну или несколько точек останова и запустите отладку (нажмите клавишу F5) либо запустите отладку в пошаговом режиме (клавиша F10 или F11).
IntelliTrace будет создавать моментальный снимок процесса приложения для каждого шага отладчика, события точки останова или необработанного события исключения. Эти события записываются на вкладке События в окне Средства диагностики наряду с другими событиями IntelliTrace. Чтобы открыть это окно, выберите Отладка > Окна > Отображение средств диагностики.
Рядом с событиями, для которых доступны моментальные снимки, отображается значок камеры.
В целях оптимизации производительности при слишком малом интервале между шагами отладки моментальные снимки не создаются. Если рядом с шагом не отображается значок камеры, попробуйте сделать временной интервал между шагами немного больше.
Переход между моментальными снимками и их просмотр
Для перехода между событиями используйте кнопки На шаг назад (ALT+[) и На шаг вперед (Alt+]) в панели инструментов "Отладка".
С помощью этих кнопок можно перейти к событиям, которые отображаются на вкладке События в окне Средства диагностики. При переходе на шаг назад или вперед к событию автоматически активируется отладка с ведением журнала для выбранного события.
В этом представлении вы можете проверить значения в окнах Стек вызовов, Локальные, Видимые и Контрольные значения. Кроме того, вы можете просматривать подсказки по данным, наводя указатель мыши на переменные, а также вычислять выражения в окне Интерпретация. Отображаемые данные поступают из моментального снимка процесса приложения, созданного на рассматриваемый момент времени.
Например, если после попадания в точку останова вы выполнили шаг отладки (клавиша F10), при нажатии кнопки На шаг назад среда Visual Studio переключится в режим отладки с ведением журнала в строке кода, соответствующей точке останова.
Чтобы вернуться к отладке в режиме реального времени, выберите Продолжить (F5) или щелкните ссылку Вернуться к динамической отладке в информационной панели.
Вы также можете просмотреть снимок на вкладке События. Для этого выберите событие со снимком и нажмите Активировать отладку с ведением журнала.
В отличие от команды Следующая инструкция при просмотре моментального снимка не осуществляется повторное выполнение кода. В этом случае вы получаете статическое представление состояния приложения на момент времени в прошлом.
Подробнее о проверке переменных в Visual Studio см. в описании возможностей отладчика.
Вопросы и ответы
Чем функция возврата на шаг назад IntelliTrace отличается от режима "Только для событий IntelliTrace"?
В режиме "Только для событий IntelliTrace" вы не можете активировать отладку с ведением журнала для шагов и точек останова отладчика. Тем не менее IntelliTrace будет регистрировать данные в окнах Локальные и Видимые только в том случае, если эти окна открыты. При этом будут записываться только те данные, которые развернуты и находятся в представлении. В режиме "Только для событий" зачастую отсутствует полное представление о состоянии переменных и составных объектов. Кроме того, не поддерживается возможность вычисления выражений и просмотра данных в окне контрольных значений.
В режиме событий и моментальных снимков IntelliTrace записывает моментальный снимок всего процесса приложения, включая составные объекты. В строке кода вы увидите ту же информацию, что и при попадании в точку останова (независимо от того, была ли ранее развернута эта информация). Кроме того, при просмотре моментальных снимков поддерживается вычисление выражений.
Как эта функция влияет на производительность?
Влияние на общую производительность пошаговой отладки зависит от приложения. Создание моментального снимка занимает примерно 30 мс. При создании моментального снимка процесс разветвляется, а ответвленная копия приостанавливается. При просмотре моментального снимка Visual Studio присоединяет ответвленную копию процесса. Для каждого моментального снимка Visual Studio копирует только таблицу страниц и присваивает страницам атрибуты копирования при записи. Если объекты в куче изменяются между шагами отладчика, с которыми связаны моментальные снимки, соответствующая таблица страниц копируется, в результате чего потеря памяти будет минимальной. Если Visual Studio обнаруживает нехватку памяти для создания моментального снимка, снимок сделан не будет.
Известные проблемы
Если при работе в режиме событий и моментальных снимков IntelliTrace в версиях Windows, предшествующих Windows 10 Fall Creators Update (RS3), в качестве целевой платформы отладки для приложения задана платформа x86, IntelliTrace не будет создавать моментальные снимки.
- Если вы работаете в Windows 10 Anniversary Update (RS1) и ниже версии 10.0.14393.2273, установите решение из статьи KB4103720.
- Если вы работаете в Windows 10 Creators Update (RS2) и ниже версии 10.0.15063.1112, установите решение из статьи KB4103722.
- Установите Windows 11 или Windows 10 с обновлением Fall Creators Update (RS3) или выполните обновление до соответствующей версии.
- Еще один вариант:
Установите набор инструментов VC++ 2015.3 версии 140 для классического компонента (x86, x64) из установщика Visual Studio.
Выполните сборку целевого приложения.
Воспользуйтесь средством editbin в командной строке, чтобы установить флаг Largeaddressaware для целевого исполняемого файла. Например, после обновления пути можно использовать следующую команду: "C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\VC\Tools\MSVC\14.12.25718\bin\Hostx86\x86\editbin.exe" /Largeaddressaware "C:\Path\To\Application\app.exe".
Чтобы начать отладку, нажмите клавишу F5. Теперь моментальные снимки создаются для шагов и точек останова отладчика.
Флаг Largeaddressaware необходимо устанавливать каждый раз, когда выполняется повторное построение исполняемого файла после внесения изменений.
При создании моментального снимка процесса для приложения, которое использует сохраненный отображенный в память файл, процесс с моментальным снимком удерживает монопольную блокировку отображенного в память файла даже после того, как родительский процесс снимет блокировку. В результате другие процессы по-прежнему могут считывать отображенный в память файл, но не могут осуществлять запись в него.
Инструкции по решению:
- По окончании сеанса отладки удалите все моментальные снимки.
При сохранении файла с помощью команды Отладка > IntelliTrace > Сохранить сеанс IntelliTrace в режиме событий и моментальных снимков дополнительные данные, полученные из моментальных снимков, будут недоступны в файле .itrace. Для событий точки останова и шага отображается та же информация, как и в случае сохранения файла в режиме IntelliTrace только для событий.
Дальнейшие действия
Из этого руководства вы узнали, как использовать функцию возврата на шаг назад IntelliTrace. Ознакомьтесь с дополнительными материалами, посвященными другим возможностям IntelliTrace.
Извините за столь нелепый вопрос, но где находится кнопка "шага назад" в qt creator? "Шаг назад" в том смысле, что при изменении кода можно было бы вернуть код в исходное состояние, на шаг назад. В конце концов, есть ли такая функция?
Клавиши "вперед" и "назад" в Qt namespace
Дарова :senor: . Прошу рассказать, какие названия у клавиш "вперед" и "назад" в Qt::Key_? . Просто.
QTimeEdit задать "шаг" при изменении
Есть виджет QTimeEdit и есть сигнал, на изменение данных в нём.
Установка Qt creator и ошибка "error no acceptable C compiler found"
Решил установить Qt creator следуя по инструкциям данной статьи но при сборке отладчика GDB выводит.
Qt Creator (Android) поймать сигнал "QDesktopWidget::resized()"
Я новичок, только в изучении Qt5.4, делаю изменение размеров виджетов в зависимости от разрешения.
Решение
General_TaO, кнопка под это дело вроде бы предусмотрена (F12, "Обратное направление"). А вот поддерживает ли это используемый отладчик - зависит уже от него.
Это же дефолтная для, наверное, всех редакторов комбинация Ctrl+Z
Хотя может ты имел ввиду вернуться к предыдущему месту редактирования, тогда смотри над столбиком с номерами строк две жёлтые стрелочки
Такое вообще бывает?
Хмм. честно говоря, что бы прямо вернуться назад, такого я не видел, но всегда можно в кол стэке пощёлкать по предыдущим шагам и во всяких watch окнах, где отслеживаешь состояние памяти, переменных и пр - будут отображаться данные предыдущего шага, так сказать история. но финальный указатель в call stack-е будет стоять там, где остановился.
Visual Studio в некоторых случаях позволяет изменить код, перекомпилировать его на лету и подменить всю историю в дебагере, то есть не перезапуская его, если конечно топологический и семантический это возможно. Так же есть Immediate Window, в котором можно протрейсить память в рантайме и повызывать функции и пр, но что бы прямо возвращаться назад. такого не бывает вроде как, да и смысла в этом особого нет.
Читайте также: