visual studio навигация по коду
Навигация по коду в Visual Studio
Описание кода
Когда вы исследуете код, зачастую необходимо быстро ознакомиться с реализацией вызываемого метода. Если вы щелкните правой кнопкой мыши по имени вызываемого метода и выберите в контекстном меню команду Go to Definition, Visual Studio откроет файл с реализацией данного метода. Однако, файл, который вы редактировали, окажется уже не в фокусе. Это конечно не непреодолимая проблема, но это неудобно.
Команда Peek Definition позволяет разработчикам просматривать определение метода, не выходя из контекста текущей области редактирования. Чтобы убедиться в этом, щелкните правой кнопкой мыши по имени метода и выберите в контекстном меню команду Peek Definition:
Помимо просмотра кода реализации, команда Peek Definition позволяет редактировать его. Наведя курсор мыши на метод в окне кода реализации, вы можете щелкнуть правой кнопкой мыши и выбрать Peek Definition, чтобы углубиться в реализации перегруженных версий этого метода или определения других методов. Когда вы углубляетесь более чем на один уровень, появляется коллекция белых и синих кружочков, позволяющих перемещаться вперед и назад по иерархии вызовов:
Если вы хотите переместить окно Pick Window (с определением метода), можете использовать значок в закладке с именем файла, справа от названия файла.
Расширенные возможности полосы прокрутки
В разделе Behaviour переключатель позволяет выбрать режим вертикальной полосы прокрутки: бар (по умолчанию) или карта. В режиме карты вы можете включить подсказки при просмотре. На рисунке ниже показана полоса прокрутки в режиме карты:
Исходный код в карте полосы прокрутки предназначен для обеспечения высокого уровня визуального представления кода при редактировании файла, т.е. вы не должны разобрать сам код, а должны просто увидеть его наглядную структуру в документе. Цель этого режима полосы прокрутки заключается в визуальной помощи при навигации по документы с большим объемом кода.
При наведении курсора на полосу прокрутки в режиме Map, слева от курсора отображается всплывающая подсказка с информацией о коде, который располагается в данной части документа:
Идея заключается в удобной функции предварительного просмотра, чтобы вы смогли найти нужный код, не используя при этом прокрутку документа.
Navigate To
В противоположность команде Find Symbol команда Navigate То выводит результаты по мере того, как пользователь вводит поисковый запрос. Чем больше текста запроса набрано, тем уже становится множество результатов. Дважды щелкнув на одном из результатов, пользователь может закрыть диалоговое окно и перейти к этому результату.
Одно из наиболее важных свойств команды Navigate То заключается в том, как именно она выполняет поиск. Допустим, пользователь ищет метод класса ProductSummary. В этом инструменте поиска пробелы, по существу, играют роль оператора AND, поэтому в ответ на запрос «prod sum» (т.е. на поиск имен prod и sum в одном и том же модуле) команда возвращает класс ProductSummary точно так же, как в ответ на запрос sum prod.
Когда вы начинаете вводить символы в строке панели Navigate То, Visual Studio использует семантический поиск для отображения списка совпадений. Другими словами, вместо простого текстового поиска, Visual Studio использует свое понимание классов и методов в коде проекта в качестве релевантного поиска. Клавиша Esc закрывает окно навигации и позволяет вернуться в исходное положение.
Переходите по коду с помощью отладчика Visual Studio
С помощью отладчика Visual Studio можно переходить по коду для проверки состояния приложения и просмотра последовательности выполнения. Для быстрого перехода к коду, который необходимо изучить, можно использовать сочетания клавиш, команды отладки, точки останова и другие функции. Знание команд навигации и сочетаний клавиш в отладчике ускоряет и упрощает поиск и устранение неполадок в приложениях.
Если вы не знакомы с процессом отладки кода, перед выполнением задач в этой статье рекомендуется прочесть документ об отладке для начинающих и статью Методы и инструменты отладки.
Переход в режим приостановки выполнения
В режиме приостановки выполнения выполнение приложения приостанавливается, но функции, переменные и объекты при этом остаются в памяти. Когда отладчик находится в режиме приостановки выполнения, можно переходить по коду. Наиболее распространенные способы быстрого перехода в режим приостановки выполнения:
Начните пошаговое выполнение кода, нажав клавишу F10 или F11. Это позволит быстро найти точку входа в приложение, после чего можно продолжать использовать команды пошагового выполнения для перехода по коду.
Например, в редакторе кода в Visual Studio можно использовать команду Выполнить до текущей позиции, чтобы запустить приложение, присоединить отладчик и перейти в режим приостановки выполнения, а затем нажать клавишу F11 для перехода по коду.
В режиме приостановки выполнения можно переходить по коду, используя различные команды. Во время режима приостановки выполнения можно выполнять поиск ошибок и нарушений целостности данных, проверяя значения переменных. Для некоторых типов проектов можно также вносить корректировки в приложение.
Большинство окон отладчика, таких как Модули и Контрольные значения, доступны только тогда, когда отладчик присоединен к приложению. Некоторые возможности отладчика, такие как просмотр значений переменных в окне локальных переменных или вычисление выражений в окне контрольных значений, доступны только при приостановке отладчика (то есть в режиме приостановки выполнения).
Если во время приостановки выполнения кода не загружены исходные файлы или файлы символов (PDB), отладчик отображает страницу Исходный файл не найден или Символы не найдены, которая поможет найти и загрузить файлы. См. статью Указание файлов символов (.pdb) и файлов с исходным кодом в отладчике Visual Studio. Если вы не можете загрузить исходные файлы или файлы символов, можно выполнить отладку инструкций на языке ассемблера в окне Дизассемблирование.
Пошаговое прохождение кода
С помощью команд пошагового выполнения отладчика можно проверять состояние приложения или изучать его последовательность выполнения.
Построчное выполнение кода
Для остановки выполнения на каждом операторе во время отладки используйте команду Отладка > Шаг с заходом или нажмите клавишу F11.
Отладчик осуществляет пошаговое выполнение операторов кода, а не физических строк. Например, предложение if может быть записано в одной строке:
Однако при пошаговом выполнении этой строки отладчик обрабатывает условие как один шаг, а следствие — как другой. В предыдущем примере условие выполняется.
При выполнении каждой строки кода можно наводить указатель мыши на переменные, чтобы просматривать их значения, или использовать окна Локальные переменные и Контрольные значения для наблюдения за изменением значений. Кроме того, можно визуально отслеживать стек вызовов при выполнении шагов с заходом в функции. (Сведения, касающиеся только Visual Studio Enterprise, см. в статье Сопоставление методов в визуализации стека вызовов при отладке.)
Пошаговое прохождение кода и пропуск некоторых функций
Во время отладки некоторые функции могут вас не интересовать или вы можете знать, что они работают, как в случае с тщательно протестированным кодом библиотеки. Чтобы пропустить код во время пошагового выполнения, можно использовать приведенные ниже команды. Функции по-прежнему выполняются, но отладчик пропускает их.
Команда с клавиатуры | Команда меню «Отладка» | Описание |
---|---|---|
F10 | Шаг с обходом | Если текущая строка содержит вызов функции, команда Шаг с обходом выполняет код, а затем останавливает выполнение в первой строке кода после возврата управления вызываемой функцией. |
SHIFT+F11 | Шаг с выходом | Команда Шаг с выходом возобновляет выполнение кода и приостанавливает выполнение, когда текущая функция возвращает управление. Отладчик пропускает текущую функцию. |
Выполнение до указанного места или функции
Вам может потребоваться выполнить код непосредственно до определенного места или функции, если вы точно знаете, какой код нужно проверить или с какого места следует начать отладку.
Выполнение до точки останова в коде
Чтобы задать простую точку останова в коде, щелкните в левом поле напротив строки кода, в которой нужно приостановить выполнение. Можно также выбрать строку и нажать клавишу F9, выбрать команду Отладка > Переключить точку останова или щелкнуть правой кнопкой мыши и выбрать команду Точка останова > Вставить точку останова. Точка останова отображается как красный кружок в левом поле рядом со строкой кода. Отладчик приостанавливает выполнение непосредственно перед выполнением строки.
Точки останова в Visual Studio предоставляют широкий набор дополнительных функций, таких как условные точки останова и точки трассировки. Дополнительные сведения см. в статье Использование точек останова.
Выполнение до точки останова функции
Можно дать отладчику команду на выполнение до тех пор, пока не будет достигнута определенная функция. Можно задать функцию по имени или выбрать ее из стека вызовов.
Указание точки останова функции по имени
Выберите команду Отладка > Создать точку останова > Точка останова функции.
В диалоговом окне Новая точка останова функции введите имя функции и выберите ее язык.
Нажмите кнопку ОК.
Если функция перегружается или находится в нескольких пространствах имен, нужную функцию можно выбрать в окне Точки останова.
Выбор точки останова функции из стека вызовов
Во время отладки откройте окно Стек вызовов, выбрав пункт Отладка > Окна > Стек вызовов.
В окне Стек вызовов щелкните правой кнопкой мыши имя функции и выберите команду Выполнить до текущей позиции или нажмите клавиши CTRL+F10.
Сведения о визуальном отслеживании стека вызовов см. в статье Сопоставление методов в визуализации стека вызовов при отладке.
Выполнение до расположения курсора
Чтобы выполнить код до позиции курсора, в окне исходного кода или в окне Стек вызовов выберите строку, в которой нужно прервать выполнение, щелкните ее правой кнопкой мыши и выберите команду Выполнить до текущей позиции или нажмите клавиши CTRL+F10. Выбор команды Выполнить до текущей позиции аналогичен заданию временной точки останова.
Выполнение до щелкнутого
Во время приостановки работы отладчика можно навести указатель мыши на оператор в исходном коде или в окне Дизассемблирование и щелкнуть значок с зеленой стрелкой Выполнить до этого места. Использование команды Выполнение до щелкнутого позволяет не устанавливать временную точку останова.
Команда Выполнение до щелкнутого доступна начиная с версии Visual Studio 2017.
Приостановка выполнения кода вручную
Чтобы приостановить выполнение в следующей доступной строке кода в выполняющемся приложении, выберите команду Отладка > Прервать все или нажмите клавиши CTRL+ALT+BREAK.
Перемещение указателя для изменения потока выполнения
Когда работа отладчика приостановлена, желтая стрелка в поле исходного кода или в окне Дизассемблированный код отмечает текущее расположение оператора, который должен быть выполнен следующим. Вы можете изменить оператор, который будет выполнен следующим, переместив эту стрелку. Можно пропустить часть кода или вернуться к предыдущей строке. Перемещение указателя полезно при возникновении таких ситуаций, как пропуск раздела кода, содержащего известную ошибку.
Для изменения оператора, который будет выполнен следующим, отладчик должен находиться в режиме приостановки выполнения. В окне исходного кода или окне Дизассемблированный код перетащите желтую стрелку в другую строку или щелкните правой кнопкой мыши строку, которую нужно выполнить следующей, и выберите команду Задать следующий оператор.
Счетчик программы переходит непосредственно к новому расположению, и инструкции между старой и новой точками не выполняются. Однако при перемещении точки выполнения обратно промежуточные инструкции не отменяются.
Отладка кода, не являющегося пользовательским
По умолчанию отладчик пытается выполнить отладку только кода вашего приложения, так как включена функция Только мой код. Дополнительные сведения о том, как эта функция работает с проектами различных типов и на разных языках, а также о том, как настроить ее, см. в статье Только мой код.
Для просмотра кода платформы, кода сторонней библиотеки или системных вызовов во время отладки можно отключить функцию «Только мой код». В меню Сервис (или Отладка) выберите пункты Параметры > Отладка и снимите флажок Включить только мой код. Когда функция «Только мой код» отключена, в окнах отладчика отображается код, не являющийся пользовательским, и отладчик может выполнять его по шагам.
Режим «Только мой код» не поддерживается для проектов устройств.
Отладка системного кода
Если вы загрузили отладочные символы для системного кода Майкрософт и отключили режим «Только мой код», можно производить шаг с заходом в системный вызов так же, как в любой другой вызов.
Сведения о загрузке символов Майкрософт см. в разделе Настройка расположения символов и параметров загрузки.
Чтобы загрузить символы для определенного системного компонента, выполните указанные ниже действия.
Во время отладки откройте окно Модули, выбрав пункт Отладка > Окна > Модули или нажав клавиши CTRL+ALT+U.
Определить, для каких модулей символы загружены, можно по значению в столбце Состояние символов в окне Модули. Щелкните правой кнопкой мыши модуль, для которого требуется загрузить символы, и выберите команду Загрузить символы.
Шаг с заходом в свойства и операторы в управляемом коде
Code Navigation
Visual Studio Code has a high productivity code editor which, when combined with programming language services, gives you the power of an IDE and the speed of a text editor. In this topic, we’ll first describe VS Code’s language intelligence features (suggestions, parameter hints, smart code navigation) and then show the power of the core text editor.
Quick file navigation
Tip: You can open any file by its name when you type ⌘P (Windows, Linux Ctrl+P ) (Quick Open).
The Explorer is great for navigating between files when you are exploring a project. However, when you are working on a task, you will find yourself quickly jumping between the same set of files. VS Code provides two powerful commands to navigate in and across files with easy-to-use key bindings.
Hold Ctrl and press Tab to view a list of all files open in an editor group. To open one of these files, use Tab again to pick the file you want to navigate to, then release Ctrl to open it.
Breadcrumbs
The editor has a navigation bar above its contents called Breadcrumbs. It shows the current location and allows you to quickly navigate between folders, files, and symbols.
Breadcrumbs always show the file path and, with the help of language extensions, the symbol path up to the cursor position. The symbols shown are the same as in Outline view and Go to Symbol.
Selecting a breadcrumb in the path displays a dropdown with that level’s siblings so you can quickly navigate to other folders and files.
If the current file type has language support for symbols, you will see the current symbol path and a dropdown of other symbols at the same level and below.
You can turn off breadcrumbs with the View > Show Breadcrumbs toggle or with the breadcrumbs.enabled setting.
Breadcrumb customization
Symbol order in Breadcrumbs
You can control how symbols are ordered in the Breadcrumbs dropdown with the breadcrumbs.symbolSortOrder settings.
Allowed values are:
Breadcrumb keyboard navigation
You can also interact with breadcrumbs without the dropdown. Press ⇧⌘; (Windows, Linux Ctrl+Shift+; ) to focus the last element, use ← (Windows, Linux Left ) and → (Windows, Linux Right ) to navigate, and use Space to reveal the element in the editor.
Go to Definition
If you press Ctrl and hover over a symbol, a preview of the declaration will appear:
Go to Type Definition
Some languages also support jumping to the type definition of a symbol by running the Go to Type Definition command from either the editor context menu or the Command Palette. This will take you to the definition of the type of a symbol. The command editor.action.goToTypeDefinition is not bound to a keyboard shortcut by default but you can add your own custom keybinding.
Go to Implementation
Go to Symbol
Open symbol by name
You can navigate between different references in the peeked editor and make quick edits right there. Clicking on the peeked editor filename or double-clicking in the result list will open the reference in the outer editor.
Tip: Additionally, the peek window is closed if you press Escape or double-click in the peek editor region. You can disable this behavior with the editor.stablePeek setting.
Bracket matching
Matching brackets will be highlighted as soon as the cursor is near one of them.
Tip: You can jump to the matching bracket with ⇧⌘\ (Windows, Linux Ctrl+Shift+\ )
Reference information
Some languages like C# support inline reference information, that is updated live. This allows you to quickly analyze the impact of your edit or the popularity of your specific method or property throughout your project:
Tip: Directly invoke the Peek References action by clicking on these annotations.
Tip: Reference information shown in CodeLens can be turned on or off through the editor.codeLens setting.
Rename symbol
Errors & warnings
Warnings or Errors can be generated either via configured tasks, by rich language services, or by linters, that constantly analyze your code in the background. Since we love bug-free code, warnings and errors show up in multiple places:
Tip: To loop through errors or warnings in the current file, you can press F8 or ⇧F8 (Windows, Linux Shift+F8 ) which will show an inline zone detailing the problem and possible Code Actions (if available):
Code Action
Warnings and Errors can provide Code Actions (also known as Quick Fixes) to help fix issues. These will be displayed in the editor in the left margin as a lightbulb. Clicking on the lightbulb will either display the Code Action options or perform the action.
Outgoing link protection
For your protection, VS Code displays a prompt before opening an outgoing website link from the editor.
You can proceed to the external website in your browser or have the options to copy the link or cancel the request. If you choose Configure Trusted Domains, a dropdown lets you trust the exact URL, trust the URL domain and subdomains, or trust all domains to disable outgoing link protection.
The option to Manage Trusted Domains, also available at any time from the Command Palette, brings up the Trusted Domains JSON file, where you can add, remove, or modify trusted domains.
Next steps
Now that you know how the editor works, time to try a few other things.
Common questions
How can I automatically select the second entry in Quick Open instead of the first?
How can I configure Ctrl+Tab to navigate across all editors of all groups
By default, Ctrl+Tab navigates between editors of the same editor group. If you want to navigate across all opened editors in all groups, you can create keyboard shortcuts for the workbench.action.quickOpenPreviousRecentlyUsedEditor and workbench.action.quickOpenLeastRecentlyUsedEditor commands:
How can I navigate between recently used editors without a picker
Here is a list of commands you can use to navigate in editors without opening a picker: