Интерактивная отладка с помощью Visual Studio Code

ОБЛАСТЬ ПРИМЕНЕНИЯ:Пакет SDK для Python azureml версии 1
Узнайте, как выполнять интерактивную отладку экспериментов, конвейеров и развертываний Машинного обучения Azure с помощью Visual Studio Code (VS Code) и debugpy.
Запуск и отладка экспериментов в локальной среде
Используйте расширение Машинное обучение Azure для проверки, запуска и отладки экспериментов машинного обучения перед их отправкой в облако.
Предварительные требования
- Расширение Машинного обучения Azure для VS Code (предварительный просмотр). Дополнительные сведения см. в разделе Настройка расширения Машинного обучения Azure VS Code.
Важно! Расширение Машинного обучения Azure для VS Code по умолчанию использует CLI (версии 2.0). Инструкции в этом руководстве предполагают использование версии CLI 1.0. Чтобы переключиться на CLI версии 1.0, задайте для параметра azureML.CLI Compatibility Mode в Visual Studio Code значение 1.0 . Дополнительные сведения об изменении параметров в Visual Studio Code см. в документации по параметрам пользователей и рабочих областей.
Важно! Эта функция сейчас доступна в виде общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания. Ее не следует использовать для производственных рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования предварительных выпусков Microsoft Azure.
- Docker Desktop для Mac и Windows
- Подсистема Docker для Linux.
Примечание В Windows не забудьте настроить Docker для использования контейнеров Linux.
Совет Для Windows, хотя и не является обязательным, настоятельно рекомендуется использовать Docker с подсистемой Windows для Linux (WSL) 2.
Отладка эксперимента локально
Перед запуском эксперимента в локальной среде убедитесь, что:
- Docker запущен.
- Параметр azureML.CLI Compatibility Mode в Visual Studio Code имеет значение 1.0 , как указано в предварительных требованиях
- В VS Code откройте представление расширения Машинного обучения Azure.
- Разверните узел подписки, содержащий рабочую область. Если у вас ее еще нет, можно создать рабочую область машинного обучения Azure с помощью расширения.
- Разверните узел рабочей области.
- Щелкните правой кнопкой мыши узел Эксперименты и выберите Создать эксперимент. При появлении запроса введите имя для эксперимента.
- Разверните узел эксперименты, щелкните правой кнопкой мыши эксперимент, который необходимо запустить, и выберите команду Запустить эксперимент.
- Выберите в списке параметр Локально.
- В первый раз используйте только в Windows. При появлении запроса на разрешение общей папки выберите Да. Включение общей папки позволяет Docker подключить каталог, содержащий скрипт, к контейнеру. Кроме того, он позволяет Docker сохранять журналы и выходные данные из запуска во временном каталоге в системе.
- Выберите Да для отладки эксперимента. В противном случае нажмите кнопку Нет. Если выбрать нет, ваш эксперимент будет выполняться локально без подключения к отладчику.
- Выберите создать новую конфигурацию запуска, чтобы создать конфигурацию запуска. Конфигурация запуска определяет скрипт, который требуется запустить, зависимости и наборы данных. Кроме того, если у вас уже есть такая возможность, выберите ее в раскрывающемся списке.
- Подготовка среды. Вы можете выбрать любой из машинное обучение Azure проверенного или создать свой собственный.
- Укажите имя файла сценария для выполнения. Путь задается относительно каталога, открытого в VS Code.
- Выберите, следует ли использовать набор данных Машинного обучения Azure. Вы можете создавать наборы данных машинного обучения Azure с помощью расширения.
- Debugpy требуется для подключения отладчика к контейнеру, выполняющему эксперимент. Чтобы добавить Debugpy в качестве зависимости, выберите Добавить Debugpy. В противном случае выберите Пропустить. Если вы не добавили debugpy в качестве зависимости, это запускает ваш эксперимент без подключения к отладчику.
- В редакторе откроется файл конфигурации, содержащий параметры конфигурации запуска. Если вы удовлетворены параметрами, выберите Отправить эксперимент. Кроме того, вы можете открыть палитру команд (Представление > Палитра команд) в строке меню и ввести команду AzureML: Submit experiment в текстовое поле.
Примечание Первое создание образа Docker может занять несколько минут.
Важно! Для одного эксперимента нельзя использовать несколько сеансов отладки. Однако можно выполнить отладку двух или более экспериментов, используя несколько экземпляров VS Code.
На этом этапе вы сможете пошагово отлаживать код с помощью VS Code.
Если вы хотите отменить запуск в любой момент, щелкните правой кнопкой мыши узел выполнить и выберите команду Отменить запуск.
Аналогично удаленному запуску эксперимента можно развернуть узел выполнения, чтобы проверить журналы и выходные данные.
Образы Docker, использующие те же зависимости, определенные в вашей среде, используются повторно между запусками. Однако при запуске эксперимента с помощью новой или другой среды создается новый образ. Так как эти образы сохраняются в локальном хранилище, рекомендуется удалить старые или неиспользуемые образы Docker. Чтобы удалить образы из системы, используйте Docker CLI или расширение VS Code Docker.
Отладка и устранение неполадок в конвейерах машинного обучения
В некоторых случаях может потребоваться интерактивная отладка кода Python, используемого в конвейере машинного обучения. С помощью VS Code и debugpy можно присоединяться к коду, как он выполняется в среде обучения.
Предварительные требования
- Рабочая область машинного обучения Azure, настроенная для использования виртуальной сети Azure.
- Конвейер машинного обучения Azure, использующий скрипты Python в рамках этапов конвейера. Например, PythonScriptStep.
- Машинное обучение вычислительного кластера Azure, который находится в виртуальной сети и используется конвейером для обучения.
- Среда разработки, которая находится в виртуальной сети. Средой разработки может быть одно из следующего:
- Виртуальная машина Azure в виртуальной сети
- Вычислительный экземпляр виртуальной машины записной книжки в виртуальной сети
- Клиентский компьютер, имеющий подключение к виртуальной сети по частной сети либо по VPN, либо через ExpressRoute.
Дополнительные сведения об использовании виртуальной сети Azure с Машинным обучением Azure см. в статье Общие сведения об изоляции и конфиденциальности виртуальной сети.
Хотя вы можете работать с ресурсами Машинного обучения Azure, которые не находятся за виртуальной сетью, рекомендуется использовать виртуальную сеть.
Принцип работы
Этапы конвейера машинного обучения запускают скрипты Python. Эти скрипты изменяются для выполнения следующих действий:
- Регистрация IP-адреса узла, на котором они выполняются. Используйте IP-адрес для подключения отладчика к сценарию.
- Запустите компонент отладки debugpy и дождитесь подключения отладчика.
- В среде разработки вы отслеживаете журналы, созданные процессом обучения, чтобы найти IP-адрес, на котором выполняется сценарий.
- Вы указываете VS Code IP-адреса для подключения отладчика к с помощью launch.json файла.
- Вы подключаете отладчик и интерактивно пройдите по сценарию.
Настройка скриптов Python
Чтобы включить отладку, внесите следующие изменения в скрипты Python, используемые шагами в конвейере ML:
-
Добавьте в файл следующие операторы импорта:
import argparse import os import debugpy import socket from azureml.core import Runparser.add_argument('--remote_debug', action='store_true') parser.add_argument('--remote_debug_connection_timeout', type=int, default=300, help=f'Defines how much time the Azure Machine Learning compute target ' f'will await a connection from a debugger client (VSCODE).') parser.add_argument('--remote_debug_client_ip', type=str, help=f'Defines IP Address of VS Code client') parser.add_argument('--remote_debug_port', type=int, default=5678, help=f'Defines Port of VS Code client')global run run = Run.get_context()if args.remote_debug: print(f'Timeout for debug connection: ') # Log the IP and port try: ip = args.remote_debug_client_ip except: print("Need to supply IP address for VS Code client") print(f'ip_address: ') debugpy.listen(address=(ip, args.remote_debug_port)) # Wait for the timeout for debugger to attach debugpy.wait_for_client() print(f'Debugger attached = ')В следующем примере кода Python показан простой файл train.py , позволяющий выполнять отладку:
# Copyright (c) Microsoft. All rights reserved. # Licensed under the MIT license. import argparse import os import debugpy import socket from azureml.core import Run print("In train.py") print("As a data scientist, this is where I use my training code.") parser = argparse.ArgumentParser("train") parser.add_argument("--input_data", type=str, help="input data") parser.add_argument("--output_train", type=str, help="output_train directory") # Argument check for remote debugging parser.add_argument('--remote_debug', action='store_true') parser.add_argument('--remote_debug_connection_timeout', type=int, default=300, help=f'Defines how much time the Azure Machine Learning compute target ' f'will await a connection from a debugger client (VSCODE).') parser.add_argument('--remote_debug_client_ip', type=str, help=f'Defines IP Address of VS Code client') parser.add_argument('--remote_debug_port', type=int, default=5678, help=f'Defines Port of VS Code client') # Get run object, so we can find and log the IP of the host instance global run run = Run.get_context() args = parser.parse_args() # Start debugger if remote_debug is enabled if args.remote_debug: print(f'Timeout for debug connection: ') # Log the IP and port ip = socket.gethostbyname(socket.gethostname()) # try: # ip = args.remote_debug_client_ip # except: # print("Need to supply IP address for VS Code client") print(f'ip_address: ') debugpy.listen(address=(ip, args.remote_debug_port)) # Wait for the timeout for debugger to attach debugpy.wait_for_client() print(f'Debugger attached = ') print("Argument 1: %s" % args.input_data) print("Argument 2: %s" % args.output_train) if not (args.output_train is None): os.makedirs(args.output_train, exist_ok=True) print("%s created" % args.output_train)Настройка конвейера машинного обучения
Чтобы предоставить пакеты Python, необходимые для запуска debugpy и получения контекста выполнения, создайте среду и задайте pip_packages=[‘debugpy’, ‘azureml-sdk==’] . Измените версию пакета SDK, чтобы она соответствовала используемой. В следующем фрагменте кода показано, как создать кластер AKS:
# Use a RunConfiguration to specify some additional requirements for this step. from azureml.core.runconfig import RunConfiguration from azureml.core.conda_dependencies import CondaDependencies from azureml.core.runconfig import DEFAULT_CPU_IMAGE # create a new runconfig object run_config = RunConfiguration() # enable Docker run_config.environment.docker.enabled = True # set Docker base image to the default CPU-based image run_config.environment.docker.base_image = DEFAULT_CPU_IMAGE # use conda_dependencies.yml to create a conda environment in the Docker image for execution run_config.environment.python.user_managed_dependencies = False # specify CondaDependencies obj run_config.environment.python.conda_dependencies = CondaDependencies.create(conda_packages=['scikit-learn'], pip_packages=['debugpy', 'azureml-sdk=='])В разделе Настройка скриптов Python в скрипты, используемые этапами конвейера машинного обучения, были добавлены новые аргументы. В следующем фрагменте кода показано, как использовать эти аргументы, чтобы включить отладку для компонента и установить время ожидания. Здесь также показано, как использовать созданную ранее среду, задав runconfig=run_config :
# Use RunConfig from a pipeline step step1 = PythonScriptStep(name="train_step", script_name="train.py", arguments=['--remote_debug', '--remote_debug_connection_timeout', 300,'--remote_debug_client_ip','','--remote_debug_port',5678], compute_target=aml_compute, source_directory=source_directory, runconfig=run_config, allow_reuse=False)При выполнении конвейера каждый шаг создает дочерний запуск. Если включена отладка, то измененный сценарий записывает в журнал сведения, аналогичные следующему тексту в 70_driver_log.txt для дочернего запуска:
Timeout for debug connection: 300 ip_address: 10.3.0.5Сохраните значение ip_address . Они будут использоваться в следующем разделе.
Вы также можете найти IP-адрес из журналов выполнения для дочернего выполнения этого шага конвейера. Дополнительные сведения о просмотре этих сведений см. в статье Мониторинг выполнения экспериментов и метрик Машинного обучения Azure.
Настройка среды разработки
- Чтобы установить debugpy в среде разработки VS Code, используйте следующую команду:
python -m pip install --upgrade debugpy- В VS Code выберите меню Отладка, а затем щелкните Открыть конфигурации. Откроется файл с именем launch.json.
- В файле launch.json найдите строку, содержащую «configurations»: [ , и вставьте после нее следующий текст. Измените запись «host»: «» на IP-адрес, возвращенный в журналах из предыдущего раздела. Измените запись «localRoot»: «$/code/step» на локальный каталог, содержащий копию отлаживаемого скрипта:
< "name": "Azure Machine Learning Compute: remote debug", "type": "python", "request": "attach", "port": 5678, "host": "", "redirectOutput": true, "pathMappings": [ < "localRoot": "$/code/step1", "remoteRoot": "." > ] >Важно! Если в разделе конфигурации уже есть другие записи, добавьте запятую (,) после вставленного кода.
Совет Рекомендуется, особенно для конвейеров, размещать ресурсы для скриптов в отдельных каталогах, чтобы код был важен только для каждого из шагов. В этом примере пример значения localRoot ссылается на /code/step1 . При отладке нескольких скриптов в разных каталогах создайте отдельный раздел конфигурации для каждого скрипта.
Подключение отладчика
- Откройте VS Code и откройте локальную копию скрипта.
- Задайте точки останова, где сценарий должен останавливаться после присоединения.
- Пока в дочернем процессе выполняется сценарий, а в журналах отображается Timeout for debug connection , используйте клавишу F5 или выберите параметр Отладка. При появлении запроса выберите конфигурациюAzure Machine Learning: Docker Debug (Машинное обучение Azure: отладка Docker). Можно также выбрать значок отладки на боковой панели, в раскрывающемся меню Отладка выберите машинное обучение Azure: Удаленная отладка, а затем с помощью зеленой стрелки присоединить отладчик. На этом этапе VS Code подключается к PTVSD внутри контейнера Docker и останавливается при достижении точки останова, заданной ранее. Теперь вы можете пошагово выполнять код, просматривать переменные и т. д.
Примечание Если в журнале отображается запись Debugger attached = False , то время ожидания истекает, и скрипт продолжает работу без отладчика. Снова отправьте конвейер и подключите отладчик после сообщения Timeout for debug connection и до истечения времени ожидания.
Устранение неполадок развертываний
В некоторых случаях может потребоваться интерактивная отладка кода Python, содержащегося в развертывании модели. Например, если начальный сценарий не работает и причину невозможно определить с помощью дополнительного ведения журнала. Используя VS Code и debugpy, вы можете присоединить отладчик к коду, выполняющемуся внутри контейнера Docker.
Если вы используете управляемые сетевые конечные точки и развертывания локально, см. статью Отладка управляемых сетевых конечных точек локально в Visual Studio Code (предварительная версия) .
Этот метод отладки не работает при использовании Model.deploy() и LocalWebservice.deploy_configuration для развертывания модели в локальной среде. В этом случае необходимо создать образ, используя метод Model.package().
Для локальных развертываний веб-службы требуется рабочая установка Docker в локальной системе. Дополнительные сведения об использовании Docker см. в соответствующей документации. Если работа с экземплярами вычислений ведется, значит, Docker уже установлен.
Настройка среды разработки
- Чтобы установить debugpy в локальной среде разработки VS Code, используйте следующую команду:
python -m pip install --upgrade debugpy- В VS Code выберите меню Отладка в области выполнения, а затем выберите Открыть конфигурации. Откроется файл с именем launch.json.
- В файле launch.json найдите единицу «configurations» (строку, содержащую «configurations»: [ ) и вставьте после нее следующий текст.
< "name": "Azure Machine Learning Deployment: Docker Debug", "type": "python", "request": "attach", "connect": < "port": 5678, "host": "0.0.0.0", >, "pathMappings": [ < "localRoot": "$", "remoteRoot": "/var/azureml-app" > ] >После вставки launch.js файл должен выглядеть следующим образом:
< // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/linkid=830387 "version": "0.2.0", "configurations": [ < "name": "Python: Current File", "type": "python", "request": "launch", "program": "$", "console": "integratedTerminal" >, < "name": "Azure Machine Learning Deployment: Docker Debug", "type": "python", "request": "attach", "connect": < "port": 5678, "host": "0.0.0.0" >, "pathMappings": [ < "localRoot": "$", "remoteRoot": "/var/azureml-app" > ] > ] >Важно! Если в разделе конфигурации уже есть другие записи, добавьте запятую ( , ) после вставленного кода.
Создание образа, содержащего debugpy
- Измените среду conda для своего развертывания, добавив в нее PTVSD. В следующем примере демонстрируется добавление с помощью параметра pip_packages :
from azureml.core.conda_dependencies import CondaDependencies # Usually a good idea to choose specific version numbers # so training is made on same packages as scoring myenv = CondaDependencies.create(conda_packages=['numpy==1.15.4', 'scikit-learn==0.19.1', 'pandas==0.23.4'], pip_packages = ['azureml-defaults==1.0.83', 'debugpy']) with open("myenv.yml","w") as f: f.write(myenv.serialize_to_string())import debugpy # Allows other computers to attach to debugpy on this IP address and port. debugpy.listen(('0.0.0.0', 5678)) # Wait 30 seconds for a debugger to attach. If none attaches, the script continues as normal. debugpy.wait_for_client() print("Debugger attached. ")Примечание В этом примере предполагается, что ws указывает на вашу рабочую область Машинное обучение Azure, а model представляет собой развертываемую модель. Файл myenv.yml содержит зависимости conda, созданные на шаге 1.
from azureml.core.conda_dependencies import CondaDependencies from azureml.core.model import InferenceConfig from azureml.core.environment import Environment myenv = Environment.from_conda_specification(name="env", file_path="myenv.yml") myenv.docker.base_image = None myenv.docker.base_dockerfile = "FROM mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:latest" inference_config = InferenceConfig(entry_script="score.py", environment=myenv) package = Model.package(ws, [model], inference_config) package.wait_for_creation(show_output=True) # Or show_output=False to hide the Docker build logs. package.pull()После создания и скачивания образа (этот процесс может занять больше 10 минут) путь к нему (включая репозиторий, имя и тег, который в данном случае также является хэшем) отображается в сообщении следующего вида:
Status: Downloaded newer image for myregistry.azurecr.io/package@sha256:
docker tag myimagepath debug:1Отладка службы
Если вы установили время ожидания для подключения debugpy в файле score.py , необходимо подключить VS Code к сеансу отладки до истечения этого времени. Запустите VS Code, откройте локальную копию score.py , установите точку останова и подготовьте ее к работе, прежде чем выполнять действия, описанные в этом разделе.
Дополнительные сведения об отладке и установке точек останова см. на этой странице.
- Чтобы запустить контейнер Docker с помощью образа, используйте следующую команду:
docker run -it --name debug -p 8000:5001 -p 5678:5678 -v :/var/azureml-app/score.py debug:1 /bin/bash
Эта команда присоединяет ваш score.py локально к объекту в контейнере. Таким образом, любые изменения в редакторе автоматически отражаются в контейнере
- Чтобы улучшить работу, вы можете перейти в контейнер с помощью нового интерфейса VS Code. Выберите расширение Docker на боковой панели VS Code, найдите созданный локальный контейнер (в этой документации — debug:1 ). Щелкните этот контейнер правой кнопкой мыши и выберите «Attach Visual Studio Code» , затем автоматически откроется новый интерфейс VS Code, и этот интерфейс отобразится внутри созданного контейнера.
- В контейнере выполните следующую команду в оболочке
runsvdir /var/runitПосле этого в оболочке в контейнере можно увидеть следующие выходные данные:

- Чтобы присоединить VS Code к debugpy в контейнере, откройте VS Code и нажмите клавишу F5 или выберите Отладка. При появлении запроса выберите конфигурациюAzure Machine Learning: Docker Debug (Машинное обучение Azure: отладка Docker). Вы также можете выбрать значок расширения Запускна боковой панели, запись Azure Machine Learning Deployment: Docker Debug (Машинное обучение Azure: отладка Docker), а затем щелкнуть зеленую стрелку, чтобы присоединить отладчик.
Когда вы нажмете зеленую стрелку и подключите отладчик, то увидите новые сведения в интерфейсе VS Code контейнера:
Кроме того, в основном интерфейсе VS Code доступны следующие возможности: 
И теперь локальный объект, score.py присоединенный к контейнеру, уже остановлен в точках останова, где вы задали значение. На этом этапе VS Code подключается к PTVSD внутри контейнера Docker и останавливается при достижении точки останова, заданной ранее. Теперь вы можете пошагово выполнять код, просматривать переменные и т. д.
Дополнительные сведения об использовании VS Code для отладки Python см. на странице Отладка кода Python.
Остановка контейнера
Чтобы остановить контейнер, используйте следующую команду:
docker stop debug
Дальнейшие действия
Теперь, когда вы настроили VS Code удаленно, вы можете использовать вычислительный экземпляр в качестве удаленного вычислений от VS Code для интерактивной отладки кода.
Ознакомьтесь с дополнительными сведениями об устранении неполадок:
- Развертывание локальной модели
- Развертывание удаленной модели
- Конвейеры машинного обучения
- ParallelRunStep
Удаленная отладка проекта C# или Visual Basic в Visual Studio
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Чтобы выполнить отладку приложения Visual Studio, развернутого на другом компьютере, установите и запустите средства удаленной отладки на том компьютере, где будет развернуто приложение, затем настройте в проекте подключение к удаленному компьютеру из Visual Studio и запустите приложение.

Сведения об удаленной отладке приложений UWP (универсальной платформы Windows) вы найдете в статье Отладка установленного пакета приложения.
Требования
Удаленный отладчик поддерживается в Windows 7 и более поздних версиях Windows Server, начиная с Windows Server 2008 с пакетом обновления 2 . Полный список требований см. в разделе Требования.
Отладка между двумя компьютерами, подключенными через прокси-сервер, не поддерживается. Отладка по поводу высокой задержки или подключения с низкой пропускной способностью, например через Интернет или через Интернет в разных странах или регионах, не рекомендуется и может завершиться ошибкой или неприемлемо медленно.
Скачивание и установка инструментов удаленной отладки
На удаленном устройстве или сервере, на котором требуется выполнить отладку (не на компьютере Visual Studio), скачайте и установите правильную версию инструментов удаленной отладки по ссылкам, приведенным в следующей таблице.
- Скачайте последние версии инструментов удаленной отладки для вашей версии Visual Studio. Последняя версия инструментов удаленной отладки совместима с более ранними версиями Visual Studio, но более ранние версии инструментов удаленной отладки несовместимы с более поздними версиями Visual Studio. (Если вы используете, к примеру, Visual Studio 2019, скачайте последнее обновление инструментов удаленной отладки для Visual Studio 2019. В этом случае не следует скачивать инструменты удаленной отладки для Visual Studio 2022.)
- Скачивайте средства удаленной отладки с архитектурой, соответствующей архитектуре компьютера, на котором они будут устанавливаться. Например, если вы хотите отлаживать приложения x86 на удаленном компьютере под управлением операционной системы x64, установите средства удаленного управления x64. Чтобы выполнить отладку приложений x86, ARM или x64 в операционной системе ARM64, установите удаленные средства ARM64.
| Версия | Ссылка | Примечания. |
|---|---|---|
| Visual Studio 2022 | Инструменты удаленной отладки | Совместимы со всеми версиями Visual Studio 2022. Скачивайте версию, соответствующую операционной системе вашего устройства (x86, x64 или ARM64). Справку по загрузке инструментов удаленной отладки для Windows Server см. в разделе Разблокировка загрузки файла. |
| Visual Studio 2019 | Инструменты удаленной отладки | Совместимы со всеми версиями Visual Studio 2019. Скачивайте версию, соответствующую операционной системе вашего устройства (x86, x64 или ARM64). Справку по загрузке инструментов удаленной отладки для Windows Server см. в разделе Разблокировка загрузки файла. |
| Visual Studio 2017 | Инструменты удаленной отладки | Совместимы со всеми версиями Visual Studio 2017. Скачивайте версию, соответствующую операционной системе вашего устройства (x86, x64 или ARM64). Справку по загрузке инструментов удаленной отладки для Windows Server см. в разделе Разблокировка загрузки файла. |
| Visual Studio 2015 | Инструменты удаленной отладки | Инструменты удаленной отладки для Visual Studio 2015 доступны по адресу My.VisualStudio.com. При запросе присоединитесь к бесплатной программе Visual Studio Dev Essentials или войдите со своим идентификатором подписки Visual Studio. Справку по загрузке инструментов удаленной отладки для Windows Server см. в разделе Разблокировка загрузки файла. |
| Visual Studio 2013 | Инструменты удаленной отладки | Страница загрузки в документации Visual Studio 2013 |
| Visual Studio 2012 | Инструменты удаленной отладки | Страница загрузки в документации Visual Studio 2012 |
| Версия | Ссылка | Примечания. |
|---|---|---|
| Visual Studio 2019 | Инструменты удаленной отладки | Совместимы со всеми версиями Visual Studio 2019. Скачивайте версию, соответствующую операционной системе вашего устройства (x86, x64 или ARM64). Справку по загрузке инструментов удаленной отладки для Windows Server см. в разделе Разблокировка загрузки файла. Последнюю версию инструментов удаленной отладки можно узнать в документации по Visual Studio 2022. |
| Visual Studio 2017 | Инструменты удаленной отладки | Совместимы со всеми версиями Visual Studio 2017. Скачивайте версию, соответствующую операционной системе вашего устройства (x86, x64 или ARM64). Справку по загрузке инструментов удаленной отладки для Windows Server см. в разделе Разблокировка загрузки файла. |
| Visual Studio 2015 | Инструменты удаленной отладки | Инструменты удаленной отладки для Visual Studio 2015 доступны по адресу My.VisualStudio.com. При запросе присоединитесь к бесплатной программе Visual Studio Dev Essentials или войдите со своим идентификатором подписки Visual Studio. Справку по загрузке инструментов удаленной отладки для Windows Server см. в разделе Разблокировка загрузки файла. |
| Visual Studio 2013 | Инструменты удаленной отладки | Страница загрузки в документации Visual Studio 2013 |
| Visual Studio 2012 | Инструменты удаленной отладки | Страница загрузки в документации Visual Studio 2012 |
Чтобы запустить удаленный отладчик, можно не устанавливать инструменты удаленной отладки, а просто скопировать файл msvsmon.exe на удаленный компьютер. Однако мастер настройки удаленного отладчика (rdbgwiz.exe) доступен только после установки инструментов удаленной отладки. Этот мастер может потребоваться для настройки, если вы захотите запускать удаленный отладчик как службу. Дополнительные сведения см. в разделе (Дополнительно) Настройка удаленного отладчика как службы.
- Для отладки приложений для Windows 10 и более поздних версий на устройствах ARM используйте ARM64 (доступно с последней версией инструментов удаленной отладки).
- Для отладки приложений Windows 10 на устройствах Windows RT используйте ARM, доступный только при загрузке инструментов удаленной отладки Visual Studio 2015.
- Чтобы выполнить отладку приложений x64 в операционной системе ARM64, запустите файл x64 msvsmon.exe, установленный с помощью удаленных средств ARM64.
В некоторых сценариях запуск удаленного отладчика из общей папки может оказаться самым эффективным решением. Дополнительные сведения см. в разделе Запуск удаленного отладчика из общей папки.
Установка удаленного отладчика
- На удаленном компьютере найдите Удаленный отладчик в меню Пуск и запустите его. Если у вас нет прав администратора на удаленном компьютере, щелкните правой кнопкой мыши приложение Удаленный отладчик и выберите Запуск от имени администратора. В противном случае просто запустите его, как обычно. Если вы планируете присоединиться к процессу, который работает от имени администратора или под другой учетной записью пользователя (например, IIS), щелкните правой кнопкой мыши приложение Удаленный отладчик и выберите пункт Запуск от имени администратора. Дополнительные сведения см. в разделе Запуск удаленного отладчика в качестве администратора.
- При первом запуске удаленного отладчика (или перед настройкой) откроется мастер настройки удаленной отладки.

В большинстве сценариев нажмите кнопку «Далее «, пока не получите страницу «Настройка брандмауэра Windows» мастера.

Если API-интерфейс веб-служб Windows не установлен (это возможно только в Windows Server 2008 R2), нажмите кнопку Установить.
Затем нажмите кнопку «Готово «, чтобы запустить удаленный отладчик.
Затем выберите «Настроить удаленную отладку» , чтобы запустить удаленный отладчик.


Чтобы прекратить работу удаленного отладчика, щелкните Файл>Выход. Его можно снова запустить из меню Пуск или из командной строки:
\msvsmon.exe
Если вам нужно добавить разрешения для дополнительных пользователей, изменить режим проверки подлинности или настроить номер порта для удаленного отладчика, воспользуйтесь инструкциями по настройке удаленного отладчика.
Удаленная отладка проекта
Отладчик не может развертывать классические приложения Visual C# и Visual Basic на удаленном компьютере, но вы все же можете выполнять их удаленную отладку описанным ниже образом. В приведенной ниже процедуре предполагается, что отладка приложения выполняется на компьютере с именем MJO-DL, как показано на иллюстрации ниже.
- Создайте проект WPF с именем MyWpf.
- Установите точку останова в легкодоступном месте кода. Например, ее можно установить в обработчике кнопки. Для этого откройте MainWindow.xaml и добавьте элемент управления Button из панели элементов, а затем дважды щелкните кнопку, чтобы открыть его обработчик.
- В обозревателе решений щелкните правой кнопкой мыши проект и выберите пункт Свойства.
- На странице Свойства откройте вкладку Отладка.

Если проект C# ориентирован на .NET Core или .NET 5 и более поздних версий, в Visual Studio 2022 или более новых версий выберите на вкладке Отладка выберите Пользовательский интерфейс профилей запуска отладки, чтобы настроить параметры для удаленной отладки. В противном случае изменение параметров удаленной отладки выполняется непосредственно на вкладке Отладка.

MJO-DL:4026 в Visual Studio 2022;
MJO-DL:4024 в Visual Studio 2019;
Внимание Не вносите изменения в код и не выполняйте повторную сборку (или придется повторить этот шаг). Исполняемый файл, скопированный на удаленный компьютер, должен в точности совпадать с локальным исходным кодом и символами.


Настройка отладки с удаленными символами
Вы можете отлаживать код с использованием символов, созданных на компьютере Visual Studio. Производительность удаленного отладчика гораздо выше при использовании локальных символов. Если необходимо использовать удаленные символы, укажите, что монитор удаленной отладки должен искать символы на удаленном компьютере.
Начиная с версии Visual Studio 2013 с обновлением 2 можно использовать следующий параметр командной строки msvsmon для использования удаленных символов для управляемого кода: Msvsmon /FallbackLoadRemoteManagedPdbs
Дополнительные сведения см. в справке по удаленной отладке (нажмите клавишу F1 в окне удаленного отладчика или выберите Справка > Использование). Также см. запись блога с описанием изменений, связанных с удаленной загрузкой символов .NET в Visual Studio 2012 и 2013.
См. также
- Отладка в Visual Studio
- Первое знакомство с отладчиком
- Настройка брандмауэра Windows для удаленной отладки
- Назначение портов удаленного отладчика
- Удаленная отладка ASP.NET на удаленном компьютере IIS
- Ошибки удаленной отладки и их устранение
Пошаговая отладка в Visual Studio. Рассказываем и показываем ОТ и ДО
![]()
Отладка кода в Visual Studio происходит довольно просто, если сравнивать это т процесс с другими IDE. Плюс отладчик Visual Studio обладает довольно широкими возможностями и позволяет отлаживать различные технологии, а если имеющихся средств не хватает, то можно воспользоваться дополнениями.
Отладка кода — это один из самых важных процессов. Без отладки в свет не выходит ни одно нормальное приложение. Потому что , независимо от опыта разработчика, код не всегда работает так , как нужно. А иногда и вообще работает совершенно не так. Вот тут как раз и приходит на помощь отладчик, который позволит разобраться , что не так , и найти изъяны. Можно , конечно , много часов провести за самостоятельным выявлением багов, но отладчиком все-таки быстрее и проще.
В то же время отладка кода — это не волшебная палочка, которая быстренько найдет и исправит все недочеты вашего кода. Отладка — это процесс, при котором код пошагово выполняется в некой программе, например , в Visual Studio. В процессе выполнения идет поиск точек, где вы могли допустить ошибку. А вы в это время можете анализировать свой код и вносить необходимые правки для устранения «косяков».
Работа с отладчиком , даже с таким простым , как Visual Studio, требует определенных знаний и понимания , что там внутри происходит. Умение работать с отладчиком вам в любом случае пригодится, если вы хотите связать свою жизнь с разработкой ПО. В этой статье мы ознакомим вас с процессом отладки при помощи Visual Studio.
Отладка кода в Visual Studio
- орфографические ошибки или опечатки,
- неправильно подключенные API,
- неправильное размещение последних корректировок в код,
- и др.
- ошибка компиляции;
- ошибка преобразования типа;
- код не поддерживает синтаксис;
- и др .
Как запустить отладчик Visual Studio
- Запустить саму программу Visual Studio.
- Откр ыть код приложения, который необходимо отладить.
- Потом при помощи нажатия клавиши «F5» запустить режим отладки. Также это можно сделать через меню, если нажать «Отладка», а потом «Начать отладку» .
- последовательность исполнения кода;
- работу памяти;
- значение переменных и др.
Какая информация выводится отладчиком Visual Studio
- Breakpoints. Тут собраны сведения о ваших точках останова.
- Output. Здесь выводятся служебные сообщения от самой Visual Studio.
- Watch. Здесь расположены переменные , за которыми вы наблюдаете в коде ; внести их можно только вручную.
- Autos. Здесь находится список переменных, с которыми прямо сейчас проводится работа.
- Locals. Здесь выв о д я тся все локальные переменные.
- Immediate. Здесь выв о д я тся переменные, которые вы т ребуете.
- Call Stack. Здесь расположен список вызываемых функций.
- Threads. Тут выводится информация о б уже стартовавших потоках вашего приложения.
- Modules. Отображаются все загруженные модули.
- Processes. Отображаются процессы модулей.
- Memory. Отображается память рассматриваемых модулей.
- Disassembly. Тут можно увидеть , как отображается ваш код на языке более высокого уровня.
- Registers. Выводится регистр значения.
В заключение
Отладка в Visual Studio дает возможность довольно быстро решить проблемы с вашим кодом. Да, без определенных знаний и понимания запустить и понять отладчик Visual Studio будет нелегко, но с опытом все станет понятнее. В разработке без отладки кода — путь в никуда , п отому что стабильность работы приложения — это залог его качества. И если на самом старте разработк и игнорировать этот процесс, то нет смысла идти дальше.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Отладка скомпилированных командлетов с помощью Visual Studio Code
В этом руководстве описывается, как выполнять интерактивную отладку исходного кода на C# для скомпилированного модуля PowerShell с помощью Visual Studio Code (VS Code) и расширения C#.
Предполагается, что у вас уже есть некоторый опыт работы с отладчиком Visual Studio Code.
- Общие сведения об отладчике VS Code см. в статье Отладка в Visual Studio Code.
- Примеры отладки файлов скриптов и модулей PowerShell см. в статье Удаленные редактирование и отладка в Visual Studio Code.
В этом руководстве предполагается, что вы прочитали и выполнили инструкции в руководстве Создание переносимых модулей.
Создание задачи сборки
Выполняйте автоматическую сборку проекта перед запуском сеанса отладки. Это позволяет гарантировать, что вы отлаживаете последнюю версию кода.
Настройте задачу сборки.
- В палитре команд выполните команду Настроить задачу сборки по умолчанию. Выполнение команды «Настроить задачу сборки по умолчанию»
- В диалоговом окне Выбор задачи для настройки выберите Создать файл tasks.json из шаблона.
- В диалоговом окне Выбор шаблона задачи выберите .NET Core.
Если файл tasks.json еще не существует, он будет создан.
Чтобы протестировать задачу сборки, выполните указанные ниже действия.
- В палитре команд выполните команду Выполнить задачу сборки.
- В диалоговом окне Выбор задачи сборки для выполнения выберите сборка.
Сведения о блокировке файлов DLL
По умолчанию в случае успешной сборки выходные данные в терминале не выводятся. Если вы видите выходные данные c текстом Файл проекта не существует, следует изменить файл tasks.json . Включите явный путь к проекту C# в виде «$/myModule» . В данном примере myModule — это имя папки проекта. Этот элемент должен следовать после элемента build в списке args следующим образом:
< "label": "build", "command": "dotnet", "type": "shell", "args": [ "build", "$/myModule", // Ask dotnet build to generate full paths for file names. "/property:GenerateFullPaths=true", // Do not generate summary otherwise it leads to duplicate errors in Problems panel "/consoleloggerparameters:NoSummary", ], "group": "build", "presentation": < "reveal": "silent" >, "problemMatcher": "$msCompile" >
При отладке библиотека DLL модуля импортируется в сеанс PowerShell в терминале VS Code. При этом она блокируется. Если запустить задачу сборки, не закрывая сеанс терминала, появится следующее сообщение:
Could not copy "obj\Debug\netstandard2.0\myModule.dll" to "bin\Debug\netstandard2.0\myModule.dll"`.
Перед перестроением необходимо закрыть сеансы терминала.
Настройка отладчика
Чтобы отладить командлет PowerShell, необходимо настроить пользовательскую конфигурацию запуска. Она используется в следующих целях:
- сборка исходного кода;
- запуск PowerShell с загруженным модулем;
- продолжение работы PowerShell в области терминала.
При вызове командлета в рамках сеанса терминала отладчик прерывает выполнение в точках останова, установленных в исходном коде.
Настройка файла launch.json для PowerShell
- Установите расширение C# для Visual Studio Code.
- В области «Отладка» добавьте конфигурацию отладки.
- В диалоговом окне Select environment выберите .NET Core .
- В редакторе откроется файл launch.json . Установив курсор внутри массива configurations , вы увидите средство выбора configuration . Если этот список не появляется, выберите Добавить конфигурацию.
- Чтобы создать конфигурацию отладки по умолчанию, выберите Запустить консольное приложение .NET Core. Запуск консольного приложения .NET Core
- Измените поля name , program , args и console следующим образом:
< "name": "PowerShell cmdlets: pwsh", "type": "coreclr", "request": "launch", "preLaunchTask": "build", "program": "pwsh", "args": [ "-NoExit", "-NoProfile", "-Command", "Import-Module $/myModule/bin/Debug/netstandard2.0/myModule.dll", ], "cwd": "$", "stopAtEntry": false, "console": "integratedTerminal" >
Поле program используется для запуска программы pwsh , что позволяет выполнить отлаживаемый командлет. Аргумент -NoExit предотвращает выход из сеанса PowerShell сразу после импорта модуля. Путь в аргументе Import-Module — это выходной путь сборки по умолчанию согласно руководству Создание переносимых модулей. Если вы создали манифест модуля (файл .psd1 ), следует использовать путь к нему. Разделитель пути / работает в Windows, Linux и macOS. Для выполнения отлаживаемых команд PowerShell необходимо использовать встроенный терминал.
Если отладчик не прерывает выполнение в каких-либо точках останова, поищите в консоли отладки Visual Studio Code следующую строку:
Loaded '/path/to/myModule.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Если она есть, добавьте «justMyCode»: false в конфигурацию запуска (на том же уровне, что и «console»: «integratedTerminal» ).
Настройка файла launch.json для Windows PowerShell
Эта конфигурация запуска предназначена для тестирования командлетов в Windows PowerShell ( powershell.exe ). Создайте еще одну конфигурацию запуска со следующими изменениями:
- переменная name должна иметь значение PowerShell cmdlets: powershell ;
- переменная type должна иметь значение clr ;
- переменная program должна иметь значение powershell ; Он должен выглядеть так:
< "name": "PowerShell cmdlets: powershell", "type": "clr", "request": "launch", "preLaunchTask": "build", "program": "powershell", "args": [ "-NoExit", "-NoProfile", "-Command", "Import-Module $/myModule/bin/Debug/netstandard2.0/myModule.dll", ], "cwd": "$", "stopAtEntry": false, "console": "integratedTerminal" >
Запуск сеанса отладки
Теперь все готово для начала отладки.
- Установите точку останова в исходном коде на командлете, который необходимо отладить. Точка останова отображается в виде красной точки во внутреннем поле.
- Убедитесь в том, что в раскрывающемся меню конфигурации в представлении Отладка выбрана соответствующая конфигурация командлетов PowerShell: Выбор конфигурации запуска
- Нажмите клавишу F5 или кнопку Начать отладку.
- Перейдите в область терминала и вызовите командлет: Вызов командлета
- Выполнение прервется в точке останова: Прерывание выполнения в точке останова
Вы можете выполнять исходный код пошагово, проверять переменные и стек вызовов.
Чтобы завершить отладку, щелкните Остановить на панели инструментов отладки или нажмите клавиши SHIFT + F5 . Оболочка, используемая для отладки, завершит работу и снимет блокировку со скомпилированного файла DLL.
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
PowerShell is an open source project. Select a link to provide feedback:
Обратная связь
Отправить и просмотреть отзыв по