Проверка кода TFVC в Visual Studio
С помощью Visual Studio можно запрашивать проверки кода, отвечать на запросы на проверку, а также приостанавливать и возобновлять работу система управления версиями Team Foundation (TFVC).
Если вы используете систему управления версиями Git вместо TFVC, используйте запрос на вытягивание для проверки кода.
Функции Visual Studio My Work и Code Review доступны в следующих выпусках:
- Visual Studio 2022: Visual Studio Community, Visual Studio Professional и Visual Studio Enterprise
- Visual Studio 2019: Visual Studio Professional и Visual Studio Enterprise
Предварительные требования
Прежде чем запрашивать проверку кода, убедитесь, что вы предоставили общий доступ к коду в TFVC.
Запрос проверки кода
Перед проверка в коде можно использовать Visual Studio, чтобы попросить других пользователей из вашей команды просмотреть его. Ваш запрос появится в окне Обозреватель команды получателя на странице Мои трудоемкие работы.
Чтобы запросить проверку кода, перед проверка в изменение:
- Перейдите на страницу Мои трудоемкиеработы в Обозреватель команды.
- На странице My Work (Моя работа ) выберите Request Review (Запросить проверку).

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

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

Ответ на запрос на проверку кода
Запрашиваемые рецензенты видят запрос на проверку кода в team Обозреватель, просматривают изменения и дают свой отзыв. Чтобы ответить на запрос на проверку, выполните приведенные далее действия.
- На странице Мои трудоемкиекоманды Обозреватель найдите запрос на проверку.

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

- Чтобы добавить примечания, в окне различий выберите код для комментариев, щелкните правой кнопкой мыши и выберите Добавить комментарий. Можно также нажать клавиши CTRL+SHIFT+K.

- Выберите Отправить примечания , чтобы отправить примечания.
Вы также можете получать оповещения по электронной почте о проверках кода. Чтобы зарегистрироваться, выберите Оповещения проекта в разделе Командный проект на странице Параметры в Обозреватель команды.

Обновление кода на основе отзыва о проверке
Получив результаты проверки кода, вы можете возобновить работу над проектом.

- На странице Мои трудоемкиеработы в командной Обозреватель выберите Возобновить в разделе Приостановленные трудоемкие работы. Изменения не сохраняются, а открытые окна восстанавливаются, поэтому вы можете добавить отзыв о проверке.
- На странице Проверка кода можно закрыть проверку, выбрав Закрыть проверку , а затем выбрав Завершить , если проверка завершена, или Отказаться, если вы не планируете ее завершить.
Дальнейшие действия
Отладка для абсолютных начинающих
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Независимо от обстоятельств код, создаваемый разработчиками программного обеспечения, далеко не всегда работает так, как задумано. В некоторых случаях все идет совершенно не по плану! Когда происходит непредвиденное, следующая задача заключается в том, чтобы выяснить, почему, и хотя мы можем просто заманчиво просто следить за нашим кодом в течение нескольких часов, проще и эффективнее использовать средство отладки или отладчик.
К сожалению, отладчик не является той волшебной палочкой, по мановению которой будут выявлены абсолютно все проблемы в коде. Процесс отладки подразумевает пошаговое выполнение кода в средстве отладки (например, в Visual Studio) в поисках точки, в которой вы допустили ошибку при написании программы. Таким образом вы узнаете, какие исправления нужно внести в код. При этом средства отладки часто позволяют вносить временные изменения, чтобы продолжить работу с программой.
Эффективное использование отладчика также требует определенных навыков, которые вырабатываются только с практикой, однако умение работать с ним является основополагающим требованием к любому разработчику программного обеспечения. В этой статье мы представим основные принципы отладки и некоторые начальные рекомендации.
Проанализируйте проблему, задавая себе правильные вопросы
Это поможет вам выяснить, в чем состоит проблема, прежде чем приступать к ее решению. Мы полагаем, что вы уже сталкивались с проблемами в коде, иначе вряд ли читали бы сейчас эту статью в поисках советов по его отладке! Итак, прежде чем начать отладку, проанализируйте проблему, которую вы пытаетесь решить:
- Что именно должен был выполнить код?
- Что произошло на самом деле? Если при запуске приложения возникает ошибка (исключение), это может быть хорошо! Исключение возникает в том случае, если при выполнении кода происходит непредвиденное событие (как правило, это ошибка какого-либо рода). С помощью средства отладки вы можете перейти точно к тому месту в коде, где возникло исключение, и исследовать возможные способы исправления ситуации. Если произошло что-то еще, каковы признаки проблемы? Есть ли у вас предположения относительно того, в каком месте кода возникла проблема? Например, если код должен выводить какой-то текст, но при этом текст содержит ошибки, вы можете сделать вывод, что в этом случае используются неверные данные или код вывода текста содержит ошибки другого рода. При пошаговом выполнении кода в отладчике вы можете изучить каждое изменение переменных и точно определить, когда и каким образом были присвоены неверные значения.
Проверьте свои предположения
Прежде чем исследовать причины возникновения ошибки, проверьте предположения, на основании которых вы ожидаете тот или иной результат. Неявные или неизвестные вам предположения могут помешать выявлению проблемы, даже если вы прямо смотрите на ее причину в отладчике. У вас может быть длинный список возможных предположений! Чтобы проверить их, задайте себе несколько вопросов.
- Используете ли вы нужный API (то есть соответствующие объект, функцию, метод или свойство)? Возможно, используемый вами API работает не так, как вы ожидаете. (После проверки вызова API в отладчике исправление может потребовать поездки в документацию, чтобы определить правильный API.)
- Правильно ли вы используете API? Даже если вы выбрали нужный API, он может использоваться неправильно.
- Нет ли в вашем коде опечаток? Некоторые опечатки, например ошибки в написании имени переменной, могут быть незаметными, особенно при работе с языками, в которых не требуется объявление переменных перед их использованием.
- Вносили ли вы в код изменения, полагая, что они никак не связаны с возникшей проблемой?
- Должны ли объект или переменная содержать определенное значение (или определенный тип значения) и соответствует ли это действительности?
- Известно ли назначение кода? Отлаживать чужой код часто бывает сложнее. Если это не ваш код, возможно, для его эффективной отладки вам потребуется изучить, что он делает.
Совет При написании кода начинайте с небольших и гарантированно работающих фрагментов! (Хороший пример кода полезен здесь.) Иногда проще исправить большой или сложный набор кода, начиная с небольшого фрагмента кода, демонстрирующего основную задачу, которую вы пытаетесь достичь. Затем вы можете последовательно изменять или добавлять код в поисках точки возникновения ошибки.
Подспрошив предположения, вы можете сократить время, необходимое для поиска проблемы в коде. Вы также можете сократить время, необходимое для устранения проблемы.
Используйте режим пошагового выполнения во время отладки для поиска места возникновения проблемы.
Очевидно, что ошибки и неверные результаты можно увидеть только после выполнения кода приложения. Кроме того, работа программы может завершиться неожиданно без каких-либо сообщений.
При запуске приложения в отладчике, который также называется режимом отладки, отладчик активно отслеживает все, что происходит при запуске программы. Кроме того, вы можете в любой точке приостановить работу приложения, исследовать его состояние и пошагово выполнять код в каждой строке, чтобы видеть в деталях, что происходит.

В Visual Studio введите режим отладки с помощью F5 (или > команды меню «Запуск отладки» или кнопки «Начать отладку» на панели инструментов отладки). Если возникает исключение, помощник по исправлению ошибок Visual Studio направит вас к точке его появления и предоставит другую необходимую информацию. См. дополнительные сведения об обработке исключений в коде в разделе Приемы и инструменты отладки.
Если исключение не возникает, возможно, вы имеете некоторое представление о том, где искать проблему в коде. Этот шаг заключается в том, что вы используете точки останова с отладчиком, чтобы дать себе возможность тщательно изучить код. Точки останова — это самая основная и важная функция надежной отладки. Точка останова указывает, в каком месте Visual Studio следует приостановить выполнение, чтобы вы могли проверить значения переменных, работу памяти или последовательность выполнения кода.
Чтобы задать точку останова в Visual Studio, достаточно щелкнуть в левом поле рядом с интересующей вас строкой кода. Также для этого можно поместить указатель мыши в нужную строку и нажать клавишу F9.
Чтобы продемонстрировать это, мы рассмотрим пример кода, который уже содержит несколько ошибок. Здесь мы используем C#, однако функции отладки также применяются для Visual Basic, C++, JavaScript, Python и других поддерживаемых языков. Также предоставлен пример кода для Visual Basic, но снимки экрана приведены для C#.
Создание образца приложения с ошибками
Затем вы создадите приложение с несколькими ошибками.
- Необходимо установить Visual Studio и рабочую нагрузку разработки для классических приложений .NET. Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого. Если необходимо установить рабочую нагрузку, но у вас уже есть Visual Studio, выберите «Сервис >получения инструментов» и «Компоненты». Запускается Visual Studio Installer. Выберите рабочую нагрузку Разработка классических приложений .NET и нажмите Изменить.
- Откройте Visual Studio. На начальном экране выберите Создать проект. Введите консоль в поле поиска, выберите C# или Visual Basic в качестве языка, а затем выберите консольное приложение для .NET. Нажмите кнопку Далее. Введите имя проекта, например ConsoleApp_FirstApp , и нажмите кнопку «Далее«. Выберите рекомендуемую целевую платформу или .NET 8, а затем нажмите кнопку «Создать«. Если вы не видите шаблон проекта консольного приложения для .NET, перейдите в раздел «Сервис >получения инструментов и функций«, который открывает установщик Visual Studio. Выберите рабочую нагрузку Разработка классических приложений .NET и нажмите Изменить. Visual Studio создаст консольный проект и откроет его в Обозревателе решений в области справа.
- Откройте файл Program.cs (или Program.vb) и замените все его содержимое по умолчанию следующим кодом. (Сначала выберите вкладку для нужного языка: C# или Visual Basic.)
using System; using System.Collections.Generic; namespace ConsoleApp_FirstApp < class Program < static void Main(string[] args) < Console.WriteLine("Welcome to Galaxy News!"); IterateThroughList(); Console.ReadKey(); >private static void IterateThroughList() < var theGalaxies = new List< new Galaxy() < Name="Tadpole", MegaLightYears=400, GalaxyType=new GType('S')>, new Galaxy() < Name="Pinwheel", MegaLightYears=25, GalaxyType=new GType('S')>, new Galaxy() < Name="Cartwheel", MegaLightYears=500, GalaxyType=new GType('L')>, new Galaxy() < Name="Small Magellanic Cloud", MegaLightYears=.2, GalaxyType=new GType('I')>, new Galaxy() < Name="Andromeda", MegaLightYears=3, GalaxyType=new GType('S')>, new Galaxy() < Name="Maffei 1", MegaLightYears=11, GalaxyType=new GType('E')>>; foreach (Galaxy theGalaxy in theGalaxies) < Console.WriteLine(theGalaxy.Name + " " + theGalaxy.MegaLightYears + ", " + theGalaxy.GalaxyType); >// Expected Output: // Tadpole 400, Spiral // Pinwheel 25, Spiral // Cartwheel, 500, Lenticular // Small Magellanic Cloud .2, Irregular // Andromeda 3, Spiral // Maffei 1, 11, Elliptical > > public class Galaxy < public string Name < get; set; >public double MegaLightYears < get; set; >public object GalaxyType < get; set; >> public class GType < public GType(char type) < switch(type) < case 'S': MyGType = Type.Spiral; break; case 'E': MyGType = Type.Elliptical; break; case 'l': MyGType = Type.Irregular; break; case 'L': MyGType = Type.Lenticular; break; default: break; >> public object MyGType < get; set; >private enum Type < Spiral, Elliptical, Irregular, Lenticular>> >
Imports System Imports System.Collections.Generic Namespace ConsoleApp_FirstApp Friend Class Program Public Shared Sub Main(ByVal args As String()) Console.WriteLine("Welcome to Galaxy News!") Call IterateThroughList() Console.ReadKey() End Sub Private Shared Sub IterateThroughList() Dim theGalaxies = New List(Of Galaxy) From < New Galaxy() With < .Name = "Tadpole", .MegaLightYears = 400, .GalaxyType = New GType("S"c) >, New Galaxy() With < .Name = "Pinwheel", .MegaLightYears = 25, .GalaxyType = New GType("S"c) >, New Galaxy() With < .Name = "Cartwheel", .MegaLightYears = 500, .GalaxyType = New GType("L"c) >, New Galaxy() With < .Name = "Small Magellanic Cloud", .MegaLightYears = 0.2, .GalaxyType = New GType("I"c) >, New Galaxy() With < .Name = "Andromeda", .MegaLightYears = 3, .GalaxyType = New GType("S"c) >, New Galaxy() With < .Name = "Maffei 1", .MegaLightYears = 11, .GalaxyType = New GType("E"c) >> For Each theGalaxy As Galaxy In theGalaxies Console.WriteLine(theGalaxy.Name & " " & theGalaxy.MegaLightYears & ", " & theGalaxy.GalaxyType) Next End Sub End Class Public Class Galaxy Public Property Name As String Public Property MegaLightYears As Double Public Property GalaxyType As Object End Class Public Class GType Shared Operator &(ByVal left As String, ByVal right As GType) As String Return New String(left & right.ToString()) End Operator Public Sub New(ByVal type As Char) Select Case type Case "S"c MyGType = GType.Type.Spiral Case "E"c MyGType = GType.Type.Elliptical Case "l"c MyGType = GType.Type.Irregular Case "L"c MyGType = GType.Type.Lenticular Case Else End Select End Sub Private _MyGType As String Public Property MyGType As Object Get Return _MyGType End Get Set(ByVal value As Object) _MyGType = value.ToString() End Set End Property Private Enum Type Spiral Elliptical Irregular Lenticular End Enum End Class End Namespace
Этот код выводит список, содержащий название галактики, расстояние до нее, а также тип галактики. При отладке важно учитывать предназначение кода. Ниже показан формат одной строки из списка, который мы хотим отобразить в выводе:
название галактики, расстояние, тип галактики.
Выполнить приложение

Нажмите клавишу F5 или кнопку «Начать отладку» на панели инструментов отладки, расположенной над редактором кода.
По результатам запуска приложения отладчик не демонстрирует никаких исключений. Тем не менее данные, выводимые в окне консоли, не соответствуют ожиданиям. Вот что мы должны были увидеть:
Tadpole 400, Spiral Pinwheel 25, Spiral Cartwheel, 500, Lenticular Small Magellanic Cloud .2, Irregular Andromeda 3, Spiral Maffei 1, Elliptical
Но вместо этого вы увидите следующие выходные данные:
Tadpole 400, ConsoleApp_FirstApp.GType Pinwheel 25, ConsoleApp_FirstApp.GType Cartwheel, 500, ConsoleApp_FirstApp.GType Small Magellanic Cloud .2, ConsoleApp_FirstApp.GType Andromeda 3, ConsoleApp_FirstApp.GType Maffei 1, 11, ConsoleApp_FirstApp.GType
По выходным данным и коду мы видим, что GType — это имя класса, содержащего тип галактики. Но мы пытаемся отобразить сам тип (например, Spiral, то есть спиральная), а не имя класса!
Отладка приложения
- Пока приложение еще работает, вставьте точку останова. Щелкните правой кнопкой мыши рядом с Console.WriteLine методом, чтобы получить контекстное меню и выберите точку останова вставить точку > останова в всплывающем меню.
foreach (Galaxy theGalaxy in theGalaxies)
For Each theGalaxy As Galaxy In theGalaxies Console.WriteLine(theGalaxy.Name & " " & theGalaxy.MegaLightYears & ", " & theGalaxy.GalaxyType) Next
В месте установки точки останова в левом поле появится красный круг.
При возникновении проблемы в выходных данных вы начинаете отладку, просматривая предыдущий код, который задает выходные данные в отладчике.
» на панели инструментов отладки (CTRL + SHIFT +F5). Выполнение приложения приостановится в заданной точке останова. Место приостановки отладчика будет выделено желтым цветом (при этом желтая строка кода еще не выполнена).
Изначально вы ожидаете, что в окно консоли будет выведено именно значение Spiral. Поэтому вы можете получить доступ к значению в этом коде при запуске приложения. В этом сценарии мы используем неверный API-интерфейс. Давайте посмотрим, можно ли исправить это при выполнении кода в отладчике.

Примечание. Для отладки кода примера Visual Basic пропустите следующие несколько шагов, пока не будет указано, как нажать кнопку «Перезапустить «.

public object GalaxyType
public GType GalaxyType

Tadpole 400, Spiral Pinwheel 25, Spiral Cartwheel, 500, Lenticular Small Magellanic Cloud .2, Andromeda 3, Spiral Maffei 1, Elliptical
public GType(char type)
Public Sub New(ByVal type As Char)
Здесь задается тип галактики, поэтому нам необходимо изучить эту строку более пристально.
» на панели инструментов отладки (CTRL + SHIFT +F5), чтобы перезапустить. Отладчик приостановит работу в строке кода, где вы задали точку останова.
Взглянув на код, вы заметите опечатку в инструкции case ‘l’ . Оно должно иметь значение case ‘I’ .Итоги
Если вы сталкиваетесь с проблемой, воспользуйтесь отладчиком и командами пошагового выполнения, такими как F10 и F11, для поиска области кода, в которой возникают ошибки.
Если выявить проблемную область кода не удается, задайте точку останова в коде, который выполняется перед возникновением ошибки, после чего используйте команды пошагового выполнения, пока проблема не проявится. Также вы можете использовать точки трассировки для вывода сообщений в окно вывода. Анализируя сообщения, которые выводятся в окно или отсутствуют в нем, нередко можно изолировать область кода, где возникает проблема. Для дальнейшего сужения области поиска этот процесс может потребоваться повторить несколько раз.
Выявив проблемную область кода, используйте отладчик для ее детального анализа. Чтобы определить причину возникновения проблемы, проверьте код во время выполнения приложения в отладчике.
- Проверьте переменные и убедитесь, что они содержат значения того типа, который вы ожидаете. Если переменная содержит недопустимое значение, найдите, где оно было задано. Для этого может потребоваться перезапустить отладчик, проверить стек вызовов или выполнить одновременно оба этих действия.
- Проверьте, выполняет ли ваше приложение код, который вы ожидаете. (Так, в примере приложения должна была выполняться инструкция switch , задающая тип галактики Irregular, однако нужный код был пропущен из-за опечатки.)
Отладчик представляет собой эффективное средства для выявления ошибок. Средство отладки может искать ошибки вместо вас в том случае, если ему известно предназначение кода. Для этого вы должны указать предназначение. Этого можно добиться с помощью модульных тестов.
Следующие шаги
Из этой статьи вы узнали общие принципы отладки приложений. Теперь вы можете приступить к изучению других возможностей отладчика.
Навигация по коду с помощью отладчика Visual Studio
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
С помощью отладчика Visual Studio можно переходить по коду для проверки состояния приложения и просмотра последовательности выполнения, которая также называется пошаговым выполнением кода. Для быстрого перехода к коду, который необходимо изучить, можно использовать сочетания клавиш, команды отладки, точки останова и другие функции. Ознакомившись с командами навигации и ярлыками отладчика, вы можете быстрее и проще найти и устранить проблемы с приложением. Список наиболее распространенных сочетаний клавиш, связанных с навигацией по коду и отладкой, см. в разделе «Отладка » в сочетаниях клавиш.
Если вы не знакомы с процессом отладки кода, перед выполнением задач в этой статье рекомендуется прочесть документ, посвященный отладке для начинающих, и статью Методы и инструменты отладки.
Запуск отладки и ввод режима останова
Некоторые команды навигации запускают приложение и автоматически присоединяют отладчик. Приложение приостанавливается на определенной строке кода на основе команды, используемой для запуска навигации, и вы вводите режим останова (то есть приложение приостановлено в отладчике).
В режиме приостановки выполнения выполнение приложения приостанавливается, но функции, переменные и объекты при этом остаются в памяти. Когда отладчик находится в режиме приостановки выполнения, можно перемещаться по коду. Существует два очень распространенных способа быстрого ввода режима останова:
- Задайте точку останова и запустите приложение.
- Запустите в определенное расположение или функцию. Например, в редакторе кода в Visual Studio можно использовать команду «Запуск к курсору «, чтобы запустить приложение, с присоединенным отладчиком и ввести режим останова. Затем можно использовать команды шага для навигации по коду.
Команды пошагового выполнения кода можно использовать для запуска приложения, но чаще используются после ввода режима останова.
Навигация по коду в режиме останова
Некоторые команды навигации в основном используются в режиме останова (то есть при приостановке работы отладчика).
- Команды пошагового выполнения кода чаще всего используются в режиме останова.
- Некоторые команды, такие как запуск, чтобы щелкнуть , можно использовать только в режиме останова.
Режим отладки и останова
В режиме приостановки выполнения можно переходить по коду, используя различные команды. Можно выполнять поиск ошибок и нарушений целостности данных, проверяя значения переменных. Для некоторых типов проектов можно также вносить корректировки в приложение.
Большинство окон отладчика, таких как Модули и Контрольные значения, доступны только тогда, когда отладчик присоединен к приложению. Некоторые возможности отладчика, такие как просмотр значений переменных в окне локальных переменных или вычисление выражений в окне контрольных значений, доступны только при приостановке отладчика (то есть в режиме приостановки выполнения).
Если во время приостановки выполнения кода не загружены исходные файлы или файлы символов (PDB), отладчик отображает страницу Исходный файл не найден или Символы не найдены, которая поможет найти и загрузить файлы. См. статью Указание файлов символов (.pdb) и файлов с исходным кодом в отладчике Visual Studio. Если вы не можете загрузить исходные файлы или файлы символов, можно выполнить отладку инструкций на языке ассемблера в окне Дизассемблирование.
Пошаговое выполнение кода
Шаг кода относится к выполнению кода приложения по одному оператору за раз с присоединенным отладчиком. Команды шага отладчика помогают наблюдать за эффектами каждой инструкции и узнать больше о его потоке выполнения.
Шаг в код
Для остановки выполнения на каждом операторе во время отладки используйте команду Отладка>Шаг с заходом или нажмите клавишу F11.
Отладчик осуществляет пошаговое выполнение операторов кода, а не физических строк. Например, предложение if может быть записано в одной строке:
int x = 42; string s = "Not answered"; if( int x == 42) s = "Answered!";
Dim x As Integer = 42 Dim s As String = "Not answered" If x = 42 Then s = "Answered!"
Но при пошаговом выполнении этой строки отладчик рассматривает условие как один шаг, а результат — как другой шаг. В предыдущем примере условие выполняется.
При вызове вложенных функций команда Шаг с заходом позволяет попасть в самую глубокую вложенную функцию. Например, если использовать Шаг с заходом на вызове Func1(Func2()) , отладчик заходит в функцию Func2 .
При выполнении каждой строки кода можно наводить указатель мыши на переменные, чтобы просматривать их значения, или использовать окна Локальные переменные и Контрольные значения для наблюдения за изменением значений. Кроме того, можно визуально отслеживать стек вызовов при выполнении шагов с заходом в функции. (Сведения, касающиеся только Visual Studio Enterprise, см. в статье Сопоставление методов в визуализации стека вызовов при отладке.)
Пошаговое выполнение кода и пропуск некоторых функций
При отладке можно пропустить функцию. Или вы можете знать, что некоторый код работает, например хорошо протестированный код библиотеки. Чтобы пропустить код во время пошагового выполнения, можно использовать приведенные ниже команды. Функции по-прежнему выполняются, но отладчик пропускает их.
| Команда с клавиатуры | Команда меню «Отладка» | Description |
|---|---|---|
| F10 | Шаг с обходом | Если текущая строка содержит вызов функции, команда Шаг с обходом выполняет код, а затем останавливает выполнение в первой строке кода после возврата управления вызываемой функцией. |
| Shift+F11 | Шаг с выходом | Команда Шаг с выходом возобновляет выполнение кода и приостанавливает выполнение, когда текущая функция возвращает управление. Отладчик пропускает текущую функцию. |
Запуск в определенное расположение или функцию
Вам может потребоваться выполнить код непосредственно до определенного места или функции, если вы точно знаете, какой код нужно проверить или с какого места следует начать отладку.
- Если вы считаете, что вы хотите повторно использовать точку останова, рекомендуется задать точку останова.
- Другие методы предназначены для удобства и аналогичны настройке временной точки останова.
Выполнение до точки останова в коде
Чтобы задать простую точку останова в коде, щелкните в левом поле напротив строки кода, в которой нужно приостановить выполнение. Можно также выбрать строку и нажать клавишу F9, выбрать команду Отладка>Переключить точку останова или щелкнуть правой кнопкой мыши и выбрать команду Точка останова>Вставить точку останова. Точка останова отображается как красный кружок в левом поле рядом со строкой кода. Отладчик приостанавливает выполнение непосредственно перед выполнением строки.


Точки останова в Visual Studio предоставляют широкий набор функций, таких как условные точки останова и точки трассировки. Дополнительные сведения см. в статье Использование точек останова.
Выполнение до точки останова функции
Можно дать отладчику команду на выполнение до тех пор, пока не будет достигнута определенная функция. Можно задать функцию по имени или выбрать ее из стека вызовов.
Чтобы указать точку останова функции по имени:
- Выберите команду Отладка>Создать точку останова>Точка останова функции.
- В диалоговом окне Новая точка останова функции введите имя функции и выберите ее язык:


Если функция перегружается или находится в нескольких пространствах имен, нужную функцию можно выбрать в окне Точки останова:


Чтобы выбрать точку останова функции в стеке вызовов, выполните следующие действия.
- Во время отладки откройте окно Стек вызовов, выбрав пункт Отладка>Окна>Стек вызовов.
- В окне Стек вызовов щелкните правой кнопкой мыши имя функции и выберите команду Выполнить до текущей позиции или нажмите клавиши CTRL+F10.
Сведения о визуальном отслеживании стека вызовов см. в статье Сопоставление методов в визуализации стека вызовов при отладке.
Выполнение до расположения курсора
Чтобы выполнить код до позиции курсора, в окне исходного кода или в окне Стек вызовов выберите строку, в которой нужно прервать выполнение, а затем щелкните ее правой кнопкой мыши и выберите команду Выполнить до текущей позиции или нажмите клавиши CTRL+F10. Выбор параметра «Запуск к курсору » аналогичен настройке временной точки останова.
Принудительное выполнение до расположения курсора
Чтобы выполнить код до позиции курсора, в окне исходного кода или в окне Стек вызовов выберите строку, в которой нужно прервать выполнение, а затем щелкните ее правой кнопкой мыши и выберите элемент Force Run To Cursor (Принудительное выполнение до расположения курсора). Если выбрать параметр Принудительное выполнение до курсора, все точки останова и первичные исключения будут пропускаться, пока отладчик не достигнет строки кода, где находится курсор.
Выполнение до щелкнутого
Во время приостановки работы отладчика можно навести указатель мыши на оператор в исходном коде или в окне Дизассемблирование и щелкнуть значок с зеленой стрелкой Выполнить до этого места. Использование запуска для щелчка аналогично настройке временной точки останова.

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

Команда Принудительное выполнение до щелчка доступна начиная с Visual Studio 2022.
Приостановка выполнения кода вручную
Чтобы приостановить выполнение в следующей доступной строке кода в выполняющемся приложении, выберите команду Отладка>Прервать все или нажмите клавиши CTRL+ALT+BREAK.
Отладка кода, не являющегося пользовательским
По умолчанию отладчик пытается выполнить отладку только кода вашего приложения, так как включена функция Только мой код. Подробнее о том, как эта функция работает с проектами различных типов и на разных языках, а также о том, как настроить ее, см. в статье Только мой код.
Для просмотра кода платформы, кода сторонней библиотеки или системных вызовов во время отладки можно отключить функцию «Только мой код». В разделе Инструменты (или Отладка) >Параметры>Отладка снимите флажок Включить только мой код. Когда функция «Только мой код» отключена, в окнах отладчика отображается код, не являющийся пользовательским, и отладчик может выполнять его по шагам.
Режим «Только мой код» не поддерживается для проектов устройств.
Отладка системного кода
Если вы загрузили отладочные символы для системного кода Майкрософт и отключили режим «Только мой код», можно производить шаг с заходом в системный вызов так же, как в любой другой вызов.
Чтобы загрузить символы для определенного системного компонента, выполните указанные ниже действия.
- Во время отладки откройте окно Модули, выбрав пункт Отладка>Окна>Модули или нажав клавиши CTRL+ALT+U.
- Определить, для каких модулей символы загружены, можно по значению в столбце Состояние символов в окне Модули. Щелкните правой кнопкой мыши модуль, для которого требуется загрузить символы, и выберите команду Загрузить символы.
Шаг с заходом в свойства и операторы в управляемом коде
По умолчанию отладчик обходит свойства и операторы при пошаговом выполнении в управляемом коде. В большинстве случаев это повышает удобство и эффективность отладки. Чтобы отключить пошаговое выполнение свойств и операторов, выберите пункт Отладка>Параметры. На странице Отладка>Общие снимите флажок Обход свойств и операторов (только управляемый код).
Перемещение указателя для изменения потока выполнения
Вы можете изменить следующую инструкцию, которая будет выполняться путем перемещения желтого указателя выполнения. Эту функцию можно использовать в режиме останова.
Это расширенная функция отладчика. Дополнительные сведения см. в разделе «Перемещение указателя выполнения».
См. также
- Что такое отладка?
- Методы и инструменты отладки
- Первое знакомство с отладкой
Проверка кода по схемам зависимостей
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Зачем использовать схемы зависимостей?
Чтобы убедиться, что код не конфликтует с его дизайном, проверьте код с помощью схем зависимостей в Visual Studio. Это может помочь:
- Найдите конфликты между зависимостями в коде и зависимостями на схеме зависимостей.
- Найти зависимости, на которые могут повлиять предложенные изменения. Например, можно изменить схему зависимостей, чтобы отобразить потенциальные изменения архитектуры, а затем проверить код, чтобы увидеть затронутые зависимости.
- Выполнить рефакторинг или миграцию кода в другую структуру. Найти код или зависимости, с которыми потребуется выполнить определенные действия даже после перемещения кода в другую архитектуру.
Requirements
- Visual Studio Чтобы создать схему зависимостей для проекта .NET Core, необходимо иметь Visual Studio 2019 версии 16.2 или более поздней версии.
- Решение с проектом моделирования с схемой зависимостей. Эта схема зависимостей должна быть связана с артефактами в проектах C# или Visual Basic, которые необходимо проверить. См. статью «Создание схем зависимостей» из кода.
Чтобы узнать, какие выпуски Visual Studio поддерживают эту функцию, см. раздел Поддержка инструментов моделирования и архитектуры в различных выпусках.
Код можно проверить вручную из открытой схемы зависимостей в Visual Studio или из командной строки. Вы также можете автоматически проверять код при выполнении локальных сборок или сборок Azure Pipelines.
Если вы хотите выполнить проверку уровня с помощью Team Foundation Server (TFS), необходимо также установить ту же версию Visual Studio на сервере сборки.
Проверка зависимостей в реальном времени
Проверка зависимостей происходит в режиме реального времени, а ошибки отображаются сразу же в списке ошибок.
- Динамическая проверка поддерживается для C# и Visual Basic.
- Чтобы включить полный анализ решений при использовании динамической проверки зависимостей, откройте параметры из золотой панели, которая отображается в списке ошибок.
- Вы можете окончательно закрыть золотой бар, если вы не заинтересованы в просмотре всех архитектурных проблем в решении.
- Если вы не включаете полный анализ решений, анализ выполняется только для редактируемых файлов.
Определение, поддерживает ли элемент проверку
Вы можете связать слои с веб-сайтами, документами Office, обычными текстовыми файлами и файлами в проектах, совместно используемых в нескольких приложениях, но процесс проверки не будет включать их. Ошибки проверки для ссылок на проекты или сборки, связанные с отдельными слоями, отображаются только в том случае, если между этими слоями отображаются зависимости. Эти ссылки считаются зависимостями, только если используются в коде.
- На схеме зависимостей выберите один или несколько слоев, щелкните правой кнопкой мыши выбранный элемент и щелкните «Просмотреть ссылки«.
- В Обозреватель уровня просмотрите столбец «Поддержка проверки«. Если значение равно false, элемент не поддерживает проверку.
Включение других сборок и проектов .NET для проверки
При перетаскивании элементов на схему зависимостей ссылки на соответствующие сборки или проекты .NET добавляются автоматически в папку «Ссылки на слои» в проекте моделирования. Эта папка содержит ссылки на сборки и проекты, которые анализируются во время проверки. Вы можете включить другие сборки и проекты .NET для проверки, не перетащив их вручную на схему зависимостей.
- В Обозреватель решений щелкните правой кнопкой мыши проект моделирования или папку «Ссылки на слой», а затем нажмите кнопку «Добавить ссылку«.
- В диалоговом окне «Добавить ссылку» выберите сборки или проекты и нажмите кнопку «ОК«.
Проверка кода вручную
Если у вас есть открытая схема зависимостей, связанная с элементами решения, можно выполнить команду «Проверить ярлык» на схеме. Можно также использовать командную строку для выполнения команды msbuild с помощью настраиваемого свойства /p:ValidateArchitecture с значением True. Например, при внесении изменений в код регулярно выполняйте проверку слоев, чтобы заранее обнаруживать конфликты зависимостей.
Проверка кода из открытой схемы зависимостей
- Щелкните правой кнопкой мыши область схемы и щелкните » Проверить архитектуру«.
Примечание. По умолчанию свойству действия сборки в файле схемы зависимостей (.layerdiagram) задано значение Validate , чтобы схема была включена в процесс проверки.
Примечание. Visual Studio может отображать карту кода вместо источника ошибки. Это происходит, когда код имеет зависимость от сборки, которая не указана схемой зависимостей, или код отсутствует зависимость, указанная схемой зависимостей. Просмотрите карту кода или код, чтобы определить, должна ли существовать зависимость. Дополнительные сведения о картах кода см. в разделе «Сопоставление зависимостей» в решениях.
Проверка кода в командной строке
- Откройте командную строку Visual Studio.
- Выберите одно из следующего:
- Чтобы проверить код для конкретного проекта моделирования в решении, запустите MSBuild со следующим пользовательским свойством.
msbuild .modelproj /p:ValidateArchitecture=true- или- Перейдите к папке, содержащей файл проекта моделирования (MODELPROJ) и схему зависимостей, а затем запустите MSBuild со следующим пользовательским свойством:
msbuild /p:ValidateArchitecture=truemsbuild .sln /p:ValidateArchitecture=true- или- Перейдите к папке решения, которая должна содержать проект моделирования, содержащий схему зависимостей, а затем запустите MSBuild со следующим пользовательским свойством:
msbuild /p:ValidateArchitecture=trueОтобразятся любые возникающие ошибки. Дополнительные сведения о MSBuild см. в статье MSBuild и задача MSBuild.
Дополнительные сведения об ошибках проверки см. в разделе «Устранение неполадок с проверкой слоя».
Управление ошибками проверки
В процессе разработки может понадобиться подавить некоторые конфликты, выявленные в ходе проверки. Например, можно подавлять ошибки, над которыми уже ведется работа, а также ошибки, не имеющие отношения к конкретному сценарию. При подавлении ошибки рекомендуется регистрировать рабочий элемент в Team Foundation.
Вы должны быть уже подключены к управлению исходным кодом (SCC) TFS для создания рабочего элемента или связи с ним. При попытке открыть соединение с другим SCC TFS Visual Studio автоматически закрывает текущее решение. Убедитесь, что вы уже подключены соответствующему SCC, перед попыткой создания рабочего элемента или связи с ним. В последних выпусках Visual Studio команды меню недоступны, если вы не подключены к SCC.
Создание рабочего элемента для ошибки проверки
- В окне списка ошибок щелкните правой кнопкой мыши ошибку, наведите указатель мыши на создание рабочего элемента и выберите тип рабочего элемента, который требуется создать.
Используйте эти задачи для управления ошибками проверки в окне списка ошибок:
Отобразятся подавленные ошибки с форматированием в виде зачеркивания. При выполнении проверки в следующий раз эти ошибки отображаться не будут.
Автоматическая проверка кода
Проверку слоев можно выполнять при каждом выполнении локальной сборки. Если команда использует Azure DevOps, можно выполнить проверку уровня с помощью шлюзовых проверка-ins, которые можно указать, создав настраиваемую задачу MSBuild, и использовать отчеты сборки для сбора ошибок проверки. Сведения о создании воротных проверка сборки см. в статье TFVC, встраиваемой проверка.
Автоматическая проверка кода во время локальной сборки
Откройте файл проекта моделирования (.modelproj) в текстовом редакторе и включите следующее свойство.
true - В Обозреватель решений щелкните правой кнопкой мыши проект моделирования, содержащий схему зависимостей или схемы, а затем щелкните «Свойства«.
- В окне «Свойства» задайте для свойства проверки архитектуры проекта моделирования значение True. Это позволяет включить проект моделирования в процесс проверки.
- В Обозреватель решений щелкните файл схемы зависимостей (.layerdiagram), который требуется использовать для проверки.
- В окне «Свойства» убедитесь, что для свойства действия сборки схемы задано значение Validate. Это включает схему зависимостей в процессе проверки.
Сведения об управлении ошибками в окне списка ошибок см. в разделе «Устранение ошибок проверки слоя».
Устранение неполадок проверки слоев
Следующая таблица описывает проблемы проверки слоев и способы их устранения. Эти проблемы отличаются от ошибок, возникающих из-за несоответствия между кодом и структурой. Дополнительные сведения об этих ошибках см. в разделе «Устранение неполадок с проверкой слоя».
Устранение ошибок проверки слоя
При проверке кода на схеме зависимостей ошибки проверки возникают при конфликте кода с проектом. Например, ошибки проверки могут происходить по следующим причинам:
- Артефакт назначен неправильному слою. В этом случае следует переместить артефакт.
- Способ использования артефактом (например, классом) другого класса конфликтует с имеющейся архитектурой. В этом случае необходимо выполнить рефакторинг кода, чтобы устранить зависимость.
Для устранения этих ошибок следует обновлять код до тех пор, пока в процессе проверки не перестанут происходить ошибки. Эту процедуру можно выполнить методом итераций.
В следующем разделе описывается синтаксис, используемый в этих ошибках, объясняется значение этих ошибок и предлагаются пути решения или управления ими.
ArtifactTypeN — это тип ArtifactN, например класс или метод, например:
См. также
- Проверка зависимостей в реальном времени в Visual Studio
- Проверка системы в ходе разработки
- Видео: проверка зависимостей архитектуры в режиме реального времени
