Имя Ssh не распознается как имя командлета функции файла сценария или исполняемой программы

Обновлено: 21.11.2024

Выполните команду Bolt Task Show или командлет PowerShell Get-BoltTask и найдите все предупреждения, связанные с метаданными вашей задачи.

Убедитесь, что название вашей задачи допустимо: имена задач должны

Начните с буквы

Может содержать только буквы, цифры и символы подчеркивания

Убедитесь, что имя исполняемого файла задачи совпадает с именем метаданных задачи. Например, если ваша задача называется mytask.rb , вы должны назвать файл метаданных mytask.json .

Я не могу добавить модуль в свой проект Bolt

Если вы получаете следующую ошибку:

Вам необходимо обновить проект, чтобы Bolt мог управлять вашими модулями и зависимостями. Дополнительные сведения см. в разделе «Миграция проекта Bolt».

Моя задача завершается с ошибкой "Отказано в доступе" (проблема с noexec)

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

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

Вывод моего плана/задачи неверен

Bolt кэширует метаданные задач и планов при перечислении планов и задач и обновляет кэш только тогда, когда модули находятся в списке

Каталог

/modules/ изменен. Попробуйте повторно запустить команду с параметром --clear-cache, чтобы обновить кеш, обновить задачу и спланировать метаданные. Задача или план также могут иметь более высокий приоритет в пути к модулям. Чтобы убедиться, что конкретная задача или план загружаются из ожидаемого места, выполните команду Bolt Task Show [имя задачи] , Bolt Plan Show [имя плана] , Get-BoltTask -Name или Get-BoltPlan -Name

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

Моя задача загадочным образом завершается с ошибкой

Попробуйте запустить Bolt с параметром --log-level debug, чтобы увидеть точный результат выполнения вашей задачи.

Моя задача не выполняется на целевых устройствах Windows

Bolt не поддерживает PowerShell 2.0. Если ваша задача нацелена на ОС Windows, в которой установлена ​​только PowerShell 2.0, задача завершится ошибкой.

И Microsoft, и Puppet рекомендуют обновлять цель с помощью Windows PowerShell 5.1, но также поддерживаются версии 3.0 и 4.0.

Bolt не может подключиться к моим хостам через SSH

Ошибки проверки ключа хоста

Это будет отображаться как ошибка, похожая на следующую:

При подключении через SSH Bolt сверяет ключ хоста с отпечатком в ~/.ssh/known_hosts, чтобы убедиться, что хост является тем, к которому он ожидает подключения. Эта ошибка означает, что в ~/.ssh/known_hosts нет ключа для хоста, поэтому Bolt не знает, как определить, правильный ли это хост.

Вы можете полностью отключить эту проверку с помощью параметра --no-host-key-check в интерфейсе командной строки или параметра host-key-check: false в разделе config: ssh файла inventory.yaml. Обратите внимание, что это снизит безопасность вашего SSH-соединения.

Тайм-аут или соединение отклонено

Предоставление пароля неинтерактивно с использованием native-ssh

По умолчанию транспорт native-ssh включает пакетный режим при установлении соединений с целевыми объектами. Когда пакетный режим включен, SSH не использует запрос пароля, что может сделать невозможным подключение к цели, если вы не можете пройти аутентификацию с помощью ключей.

Вы можете отключить BatchMode в конфигурации транспорта с помощью параметра пакетного режима, который позволяет SSH вернуться к запросу пароля в случае сбоя аутентификации ключа. Однако native-ssh по умолчанию использует клиент ssh, который интерактивно запрашивает пароли и приводит к зависанию Bolt.

Чтобы избежать зависания при отключенном пакетном режиме, необходимо настроить ssh-command для использования утилиты SSH, такой как sshpass, для неинтерактивного предоставления пароля клиенту SSH. Кроме того, убедитесь, что пользователь настроен и проверка ключа хоста отключена.

В следующей конфигурации показано, как отключить BatchMode и предоставить пароль клиенту SSH с помощью sshpass и плагина приглашения.

Bolt не может подключиться к моим хостам Windows

Тайм-аут или соединение отклонено

По умолчанию Bolt пытается подключиться через SSH. Убедитесь, что вы указали протокол winrm для цели. Есть три способа указать winrm :

Передайте --transport winrm в интерфейсе командной строки

Установите транспорт winrm в файле конфигурации или инвентаризации:

Передайте --no-ssl в интерфейсе командной строки

Установите для ключа ssl значение false в файле конфигурации или инвентаризации:

Функции журнала Puppet не регистрируются в консоли

Журналы Puppet могут не распечатываться на консоли, потому что они регистрируются на более низком уровне, чем Bolt настроен для печати. По умолчанию Bolt выводит на консоль все журналы уровня предупреждения или выше.

Кроме того, журналы Puppet печатаются в Bolt на другом уровне, чем в Puppet. Например, журналы уровня уведомлений Puppet эквивалентны уровню информации в Bolt.В результате, если вы используете функцию журналаведомости () Puppet, Bolt по умолчанию не выводит содержимое уведомления на консоль. Вы можете увидеть, какой уровень журнала Bolt соответствует каждому уровню журнала Puppet, в функциях журнала Puppet в Bolt.

Чтобы распечатать журналы и сообщения Bolt на консоли, вы можете выполнить одно или несколько из следующих действий:

Если вы хотите просмотреть все журналы определенного уровня на консоли, задайте уровень журнала из командной строки или в файле конфигурации.

Если у вас есть сообщения, которые вы хотите регистрировать непосредственно из Bolt, используйте функции планирования журнала Bolt.

Если у вас есть сообщения, которые вы хотите вывести на консоль независимо от уровня журнала, вам следует использовать функцию плана out::message.

Сообщение об ошибке «Расширения не созданы»

Если вы видите ошибку, связанную с драгоценным камнем, похожую на следующую:

Используйте предоставленную Bolt команду gem для переустановки/установки этих гемов. Например:

Не удалось проверить сертификат при установке модулей

При работе в Windows Bolt автоматически устанавливает переменные среды SSL_CERT_DIR и SSL_CERT_FILE, если они еще не установлены. Предполагая место установки по умолчанию, переменные устанавливаются в следующий каталог и сертификат, которые устанавливаются вместе с пакетом Bolt:

SSL_CERT_DIR = C:\Program Files\Puppet Labs\Bolt\ssl\certs

SSL_CERT_FILE = C:\Program Files\Puppet Labs\Bolt\ssl\cert.pem

Если вы видите ошибку подключения SSL, похожую на следующую, при работе в Windows:

Установите переменные среды SSL_CERT_DIR и SSL_CERT_FILE для использования действительного сертификата и каталога сертификатов.

PowerShell не распознает командлеты Bolt

PowerShell 3.0 не может автоматически обнаруживать и загружать модуль Bolt. Если вы используете PowerShell 3.0, добавьте модуль Bolt вручную.

🔩 Совет. Чтобы подтвердить свою версию PowerShell, запустите $PSVersionTable .

Чтобы позволить PowerShell загружать Bolt, добавьте правильный модуль в свой профиль PowerShell.

Обновите свой профиль PowerShell.

Загрузите модуль в текущее окно PowerShell.

PowerShell не удалось загрузить модуль Bolt PowerShell

Политика выполнения PowerShell — это функция безопасности, которая контролирует условия, при которых PowerShell загружает файлы конфигурации и запускает сценарии. Эта функция помогает предотвратить выполнение вредоносных скриптов. Политика по умолчанию: Restricted (не разрешать выполнение сценариев) для клиентов Windows и RemoteSigned (разрешать подписанные и неподписанные сценарии не из Интернета) для серверов Windows. В некоторых средах это значение изменяется на AllSigned , что позволяет запускать сценарии только в том случае, если они подписаны доверенным издателем.

Начиная с Bolt 2.21.0, мы подписываем файлы модулей Bolt PowerShell с помощью сертификата подписи кода Puppet. Если в вашей среде PowerShell используется политика выполнения AllSigned и вы добавляете Puppet в качестве доверенного издателя, команда Bolt работает без каких-либо дополнительных данных. Если вы используете политику AllSigned и не добавили Puppet в качестве доверенного издателя, вы можете принять издателя, не изменяя свою политику выполнения.

Если в вашей среде используется политика Restricted, вы должны изменить ее на RemoteSigned или AllSigned. Прежде чем вносить какие-либо изменения в политику, проконсультируйтесь со своей командой безопасности.

Если вы видите эту или подобную ошибку при попытке запустить Bolt, возможно, вам нужно изменить ограничения политики выполнения скриптов:

Чтобы изменить политику выполнения скрипта:

Нажмите Windows+X, A, чтобы запустить PowerShell от имени администратора.

Установите для политики выполнения скрипта значение не ниже RemoteSigned :

Дополнительную информацию о политиках выполнения PowerShell см. в документации Microsoft о политиках выполнения и их настройке.

Сообщение об ошибке «Не удалось разобрать PKey: нет стартовой строки» при использовании закрытого ключа SSH

Bolt не поддерживает зашифрованные закрытые ключи SSH, если ключи предоставляются с использованием поля данных ключа в конфигурации вашего транспорта. Если предоставление расшифрованного ключа возможно для вашего варианта использования и методов обеспечения безопасности, вы можете вручную расшифровать ключ, запустив openssl rsa -in и указав свою парольную фразу. Кроме того, вы можете добавить ключ к своему агенту SSH и не указывать закрытый ключ для использования Bolt. Bolt будет использовать агент для аутентификации вашего подключения.

Выполнение команд с помощью транспорта Docker не использует переменные среды

Когда Bolt запускает команду с использованием транспорта Docker, он обращается к команде docker exec и устанавливает переменные среды с помощью параметра командной строки --env для установки переменных среды. Когда вы запускаете команду с использованием транспорта Docker, и команда включает интерполяцию переменных среды, переменные среды не интерполируются должным образом.

Например, следующая команда:

Результаты вывода аналогичны:

Чтобы запускать команды, которые интерполируют переменные среды с помощью транспорта Docker, обновите команду для выполнения нового процесса оболочки, а затем прочитайте команду из строки. Например, вы можете изменить команду на:

Это приводит к ожидаемому результату:

Вы можете настроить транспорт Docker так, чтобы при выполнении команд всегда выполнялся новый процесс оболочки, установив параметр конфигурации docker.shell-command в файле инвентаризации или файле Bolt-Defaults.yaml:

Я не могу получить доступ к конфиденциальным выводам задачи с помощью транспорта pcp

Конфиденциальный вывод не поддерживается при выполнении задач с использованием транспорта pcp. Дополнительные сведения см. в документации по Bolt_shim.

Мне все еще нужна помощь

SSH — это сетевой инструмент, используемый для удаленного входа из командной строки в системы, на которых включен сервер. У него есть родственные приложения с именами SFTP и SCP, которые можно использовать для копирования файлов.

Системы Windows 10 со сборкой 1803 или новее и Windows Server 2019 поставляются с реализацией OpenSSH, которая включена по умолчанию. В некоторых старых версиях это может быть дополнительный компонент, который необходимо установить, прежде чем его можно будет использовать.

На этой веб-странице предполагается, что пользователь является опытным пользователем SSH в других типах систем и уже знаком с основами работы с парами ключей, файлами "known_hosts" и т. д. Также не обсуждаются "вспомогательные" темы, такие как "ssh-agent".

Проверка установки

Самый простой способ определить, установлен ли OpenSSH, — открыть командное окно (перейти в меню «Пуск», найти раздел «Система Windows» и выбрать «Командная строка»). Введите « ssh », и вы должны увидеть что-то вроде этого:

Возможно, его потребуется установить (проверьте, существует ли папка "C:\Windows\System32\OpenSSH" и есть ли в ней такие файлы, как "ssh.exe"). Если он установлен, то этот каталог необходимо добавить в путь поиска (введите «echo %PATH%» в окне командной строки, чтобы увидеть, есть ли он там). В противном случае для изменения системного пути потребуются права администратора, поэтому обратитесь за помощью в SENS.

Установка

  • Нажмите на значок шестеренки "Настройки" на левой панели меню "Пуск".
  • Нажмите "Приложения".
  • Нажмите "Дополнительные функции".
  • Посмотрите в списке. Если вы не видите «Клиент OpenSSH», нажмите «Добавить функцию».
  • Выберите «Клиент OpenSSH» и нажмите «Установить».

Использование

После установки использовать его так же просто, как ввести что-то вроде:

Чтобы скопировать файлы с помощью защищенного FTP:

Чтобы скопировать файлы с помощью защищенного копирования с сохранением исходных временных меток:

Если вы являетесь пользователем Unix/Linux, помните, что подстановочные знаки, такие как " * ", ведут себя по-разному в командной оболочке Windows (в Linux расширение имени файла обрабатывается оболочкой, тогда как в Windows за это отвечают приложения) .

Открытые и закрытые ключи

Windows хранит ваш открытый и закрытый ключи вместе с файлом "known_hosts" в папке с именем "C:\Users\имя_пользователя\.ssh" , похожей на "~/.ssh". " в системах Unix. На самом деле файлы имеют одинаковое имя и формат, поэтому, если у вас уже есть эти файлы в системе Unix/Linux, вы можете просто скопировать их в соответствующую папку Windows.

Если вам нужно создать эти ключи, откройте окно командной строки Windows, перейдите в папку "C:\Users\имя пользователя\.ssh" и введите следующие команды:

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

Как и в версиях для Linux, закрытые ключи требуют специальных разрешений, чтобы только пользователь мог их прочитать. Для этого:

  • Перейдите к папке "C:\Users\имя пользователя\.ssh".
  • Для обоих файлов "id_dsa" и "id_rsa" щелкните их правой кнопкой мыши и выберите "Свойства".
  • Перейдите на вкладку "Безопасность" и нажмите "Дополнительно".
  • Установите для себя полный доступ, выделив эту строку, нажав "Изменить", "Полный доступ" и "ОК".
  • Удалите любые другие записи, выделив их и нажав "Удалить".
  • Нажмите "ОК", чтобы закрыть открытые окна и сохранить изменения.

Не делайте этого для файлов " *.pub " или других файлов в этой папке.

На этой странице рассматриваются распространенные проблемы с west и способы их решения.

ошибки получения обновлений west¶

Один из хороших способов решения проблем с получением данных — запустить west update в подробном режиме, например так:

Выходные данные включают команды Git, запущенные западом, и их выходные данные. Найдите что-то вроде этого:

Пример команды git fetch в последней строке выше — это то, что должно быть успешным.

Одна из стратегий — перейти в /some/directory , скопировать/вставить и запустить всю команду git fetch, а затем выполнить отладку оттуда, используя документацию для вашего помощника по хранению учетных данных.

Если вы можете добиться успешного выполнения команды git fetch без запроса пароля при непосредственном запуске, вы сможете запустить west update без ввода пароля в той же оболочке.

«Запад» не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл».¶

В Windows это означает, что либо west не установлен, либо переменная среды PATH не содержит каталог, в котором pip установил west.exe .

Во-первых, убедитесь, что вы установили west; см. Установка west . Затем попробуйте запустить на запад из нового окна cmd.exe. Если это все еще не работает, продолжайте читать.

Вам нужно найти каталог, содержащий west.exe , а затем добавить его в PATH . (Это изменение PATH должно было быть сделано для вас, когда вы устанавливали Python и pip, поэтому обычно вам не нужно выполнять эти шаги.)

Выполните эту команду в cmd.exe:

Найдите в выходных данных строку вида Location: C:\foo\python\python38\lib\site-packages . Точное местоположение на вашем компьютере будет другим.

Найдите файл с именем west.exe в каталоге скриптов C:\foo\python\python38\scripts .

Обратите внимание, что lib\site-packages в выводе pip3 show были изменены на скрипты!

Если вы видите west.exe в каталоге скриптов, добавьте полный путь к скриптам в PATH с помощью следующей команды:

Не просто копируйте/вставляйте эту команду. Расположение каталога скриптов в вашей системе будет другим.

Закройте окно cmd.exe и откройте новое. Вы должны быть в состоянии бежать на запад .

"Ошибка: неожиданный ключевой аргумент "requires_workspace""¶

Эта ошибка возникает в некоторых дистрибутивах Linux после обновления до west 0.7.0 или более поздней версии с 0.6.x. Например:

Похоже, это проблема с пунктом дистрибутива; подробности см. в этом комментарии в западном выпуске 373. Известно, что некоторые версии Ubuntu и Linux Mint имеют эту проблему. Некоторые пользователи сообщают о проблемах и в Fedora.

Ни пользователи macOS, ни пользователи Windows не сообщали об этой проблеме. Сообщений об этой проблеме в других дистрибутивах Linux, таких как Arch Linux, также не поступало.

Временное решение 1: удалите старую версию, а затем обновите:

Временное решение 2: установите west в виртуальной среде Python

Одним из вариантов является использование модуля venv, который является частью стандартной библиотеки Python 3. Некоторые дистрибутивы удаляют этот модуль из своих базовых пакетов Python 3, поэтому вам может потребоваться дополнительная работа, чтобы установить его в вашей системе.

"неверный выбор: "сборка" (или "прошивка" и т. д.)¶

Если вы видите такую ​​непредвиденную ошибку при попытке запустить команду расширения Zephyr (например, west flash , west build и т. д.):

Скорее всего, вы запускаете команду за пределами рабочей области west . Уэст должен знать, где находится ваше рабочее пространство, чтобы найти расширения .

Чтобы исправить это, у вас есть два варианта:

Запустите команду из рабочей области (например, из каталога zephyrproject, который вы создали при начале работы).

Например, создайте каталог сборки внутри рабочей области или запустите west flash --build-dir YOUR_BUILD_DIR внутри рабочей области.

Установите переменную среды ZEPHYR_BASE и повторно запустите команду расширения west. Если установлено, запад будет использовать ZEPHYR_BASE для поиска вашей рабочей области.

Если вы не уверены, является ли команда встроенной или расширением, запустите west help из своего рабочего пространства. Вывод выводит команды расширения отдельно и выглядит следующим образом для основной линии Zephyr:

«неверный выбор: ‘post-init’»¶

Если вы видите эту ошибку при запуске west init:

Значит, у вас установлена ​​старая версия west, и вы пытаетесь использовать ее в рабочей области, для которой требуется более новая версия.

Самый простой способ решить эту проблему — перейти на западную версию и повторить попытку следующим образом:

Установите последнюю версию west с параметром -U для установки pip3, как показано в разделе Установка west .

Создайте резервную копию всего содержимого zephyrproject/.west/config, которое вы хотите сохранить. (Если у вас не установлены какие-либо параметры конфигурации, этот шаг можно пропустить.)

Полностью удалите каталог zephyrproject/.west (если вы этого не сделаете, вы получите сообщение об ошибке «уже в рабочей области», которое будет рассмотрено далее).

Снова бегите на запад.

«уже в установк延

Вы можете увидеть эту ошибку при запуске west init с west 0.6:

Если это неожиданно, и вы действительно пытаетесь создать новую рабочую область west, то вполне вероятно, что west использует переменную среды ZEPHYR_BASE для поиска рабочей области в другом месте вашей системы.

Это сделано намеренно; он позволяет вам размещать ваши приложения Zephyr в любом каталоге и по-прежнему использовать west для их сборки, прошивки и отладки, например.

Чтобы решить эту проблему, отключите ZEPHYR_BASE и повторите попытку.

© Copyright 2015-2022 Участники проекта Zephyr и отдельные участники. Последнее обновление: 24 марта 2022 г.

В этом руководстве вы настроите Visual Studio Code для использования компилятора и отладчика Microsoft Visual C++ в Windows.

После настройки VS Code вы скомпилируете и отладите простую программу Hello World в VS Code.В этом учебнике не рассказывается подробно о наборе инструментов Microsoft C++ или языке C++. По этим темам в Интернете доступно множество хороших ресурсов.

Если у вас возникнут какие-либо проблемы, не стесняйтесь сообщить о проблеме для этого руководства в репозитории документации VS Code.

Предпосылки

Чтобы успешно завершить это руководство, необходимо сделать следующее:

Установите расширение C/C++ для VS Code. Вы можете установить расширение C/C++, выполнив поиск «c++» в представлении «Расширения» ( ⇧⌘X (Windows, Linux Ctrl+Shift+X )).

Установите набор инструментов компилятора Microsoft Visual C++ (MSVC).

Если у вас установлена ​​последняя версия Visual Studio, откройте установщик Visual Studio из меню "Пуск" Windows и убедитесь, что рабочая нагрузка C++ проверена. Если он не установлен, установите флажок и нажмите кнопку «Изменить» в программе установки.

Вы также можете установить рабочую нагрузку "Разработка рабочего стола на C++" без полной установки интегрированной среды разработки Visual Studio. На странице загрузок Visual Studio прокрутите вниз, пока не увидите Инструменты для Visual Studio 2022 в разделе Все загрузки, и выберите загрузку для инструментов сборки для Visual Studio 2022.

При этом будет запущен установщик Visual Studio, который откроет диалоговое окно с доступными рабочими нагрузками Visual Studio Build Tools. Проверьте рабочую нагрузку "Разработка рабочего стола с помощью C++" и выберите "Установить".

Примечание. Вы можете использовать набор инструментов C++ из Visual Studio Build Tools вместе с Visual Studio Code для компиляции, сборки и проверки любой кодовой базы C++, если у вас также есть действующая лицензия Visual Studio (Community, Pro , или Enterprise), которые вы активно используете для разработки этой кодовой базы C++.

Проверьте установку Microsoft Visual C++

Чтобы использовать MSVC из командной строки или VS Code, необходимо выполнить запуск из командной строки разработчика для Visual Studio. В обычной оболочке, такой как PowerShell, Bash или командная строка Windows, не установлены необходимые переменные среды пути.

Чтобы открыть командную строку разработчика для VS, начните вводить слово «разработчик» в меню «Пуск» Windows, и оно должно появиться в списке предложений. Точное имя зависит от того, какая версия Visual Studio или Visual Studio Build Tools у вас установлена. Выберите элемент, чтобы открыть приглашение.

Вы можете проверить правильность установки компилятора C++, cl.exe , введя 'cl', и вы должны увидеть сообщение об авторских правах с версией и основным описанием использования.

Если командная строка разработчика использует расположение BuildTools в качестве начального каталога (вам не следует помещать туда проекты), перейдите в папку пользователя ( C:\users\\ ), прежде чем начинать создавать новые проекты.< /p>

Примечание. Если по какой-то причине вы не можете запустить VS Code из командной строки разработчика, вы можете найти обходной путь для создания проектов C++ с помощью VS Code в разделе Запуск VS Code вне командной строки разработчика.

Создать Hello World

В командной строке разработчика создайте пустую папку с именем "projects", где вы можете хранить все свои проекты VS Code, затем создайте подпапку с именем "helloworld", перейдите в нее и откройте VS Code ( code ) в этой папке. ( . ), введя следующие команды:

Код . Команда открывает VS Code в текущей рабочей папке, которая становится вашей «рабочей областью». По мере прохождения руководства вы увидите три файла, созданных в папке .vscode в рабочей области:

  • tasks.json (инструкции по сборке)
  • launch.json (настройки отладчика)
  • c_cpp_properties.json (путь к компилятору и настройки IntelliSense)

Добавить файл исходного кода

В строке заголовка проводника нажмите кнопку "Новый файл" и назовите файл helloworld.cpp .

Добавить исходный код Hello World

Теперь вставьте этот исходный код:

Теперь нажмите ⌘S (Windows, Linux Ctrl+S ), чтобы сохранить файл. Обратите внимание, как только что добавленный файл отображается в представлении Проводника ( ⇧⌘E (Windows, Linux Ctrl+Shift+E) ) на боковой панели VS Code:

Вы также можете включить функцию "Автосохранение" для автоматического сохранения изменений в файле, установив флажок "Автосохранение" в главном меню "Файл".

Панель действий в крайнем левом углу позволяет открывать различные представления, например «Поиск», «Управление версиями» и «Выполнить». Вы познакомитесь с представлением «Выполнить» позже в этом руководстве. Дополнительные сведения о других представлениях см. в документации по пользовательскому интерфейсу VS Code.

Примечание. Когда вы сохраняете или открываете файл C++, вы можете увидеть уведомление от расширения C/C++ о доступности версии Insiders, которая позволяет протестировать новые функции и исправления. Вы можете проигнорировать это уведомление, выбрав X (Удалить уведомление).

Исследуйте IntelliSense

В новом файле helloworld.cpp наведите указатель мыши на вектор или строку, чтобы увидеть информацию о типе. После объявления переменной msg начните вводить msg. как при вызове функции-члена. Вы должны немедленно увидеть список завершения, который показывает все функции-члены, и окно, которое показывает информацию о типе для объекта msg:

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

Сборка helloworld.cpp

Далее вы создадите файл tasks.json, чтобы указать VS Code, как собирать (компилировать) программу. Эта задача вызовет компилятор Microsoft C++ для создания исполняемого файла на основе исходного кода.

В главном меню выберите «Терминал» > «Настроить задачу сборки по умолчанию». В раскрывающемся списке будет отображаться раскрывающийся список задач со списком различных предопределенных задач сборки для компиляторов C++. Выберите cl.exe build active file, который создаст файл, отображаемый (активный) в данный момент в редакторе.

Это создаст файл tasks.json в папке .vscode и откроет его в редакторе.

Ваш новый файл tasks.json должен выглядеть примерно так, как показано ниже:

Настройка команды определяет программу для запуска; в данном случае это «cl.exe». Массив args указывает аргументы командной строки, которые будут переданы в cl.exe. Эти аргументы должны быть указаны в порядке, ожидаемом компилятором. Эта задача сообщает компилятору C++ взять активный файл ($), скомпилировать его и создать исполняемый файл (/Fe: переключатель) в текущем каталоге ($) с тем же именем, что и у активного файла, но с расширением .exe. ( $.exe ), что в нашем примере приводит к helloworld.exe.

Примечание. Подробнее о переменных tasks.json можно узнать в справочнике по переменным.

Значение ярлыка — это то, что вы увидите в списке задач; вы можете назвать это как хотите.

Значение ProblemMatcher выбирает анализатор выходных данных, который будет использоваться для поиска ошибок и предупреждений в выходных данных компилятора. Для cl.exe вы получите наилучшие результаты, если будете использовать средство сопоставления задач $msCompile.

Значение isDefault: true в групповом объекте указывает, что эта задача будет запущена при нажатии ⇧⌘B (Windows, Linux Ctrl+Shift+B ). Это свойство предназначено только для удобства; если вы установите для него значение false, вы все равно сможете запустить его из меню терминала с помощью Tasks: Run Build Task.

Запуск сборки

Вернитесь к файлу helloworld.cpp . Ваша задача создает активный файл, и вы хотите построить helloworld.cpp .

Чтобы запустить задачу сборки, определенную в tasks.json , нажмите ⇧⌘B (Windows, Linux Ctrl+Shift+B ) или в главном меню терминала выберите Задачи: Запустить задачу сборки.

При запуске задачи под редактором исходного кода должна появиться панель встроенного терминала. После завершения задачи терминал показывает выходные данные компилятора, указывающие на то, была ли сборка успешной или неудачной. Для успешной сборки C++ вывод выглядит примерно так:

Если сборка завершается сбоем из-за того, что не найден cl.exe или отсутствует путь включения, убедитесь, что вы запустили VS Code из командной строки разработчика для Visual Studio.

Создайте новый терминал с помощью кнопки +, и у вас будет новый терминал (работающий с PowerShell) с папкой helloworld в качестве рабочего каталога. Запустите ls, и теперь вы должны увидеть исполняемый файл helloworld.exe вместе с различными промежуточными выходными файлами C++ и файлами отладки ( helloworld.obj , helloworld.pdb ).

Вы можете запустить helloworld в терминале, набрав .\helloworld.exe .

Примечание. Возможно, сначала вам придется несколько раз нажать Enter, чтобы увидеть приглашение PowerShell в терминале. Эта проблема должна быть исправлена ​​в будущем выпуске Windows.

Изменение tasks.json

Вы можете изменить файл tasks.json для создания нескольких файлов C++, используя такой аргумент, как "$\\*.cpp" вместо $ . Это создаст все файлы .cpp в вашей текущей папке. Вы также можете изменить имя выходного файла, заменив "$\\$.exe" жестко заданным именем файла (например, "$\\myProgram.exe" ).

Отладка файла helloworld.cpp

Далее вы создадите файл launch.json, чтобы настроить VS Code для запуска отладчика Microsoft C++ при нажатии клавиши F5 для отладки программы. В главном меню выберите «Выполнить» > «Добавить конфигурацию». а затем выберите C++ (Windows).

После этого вы увидите раскрывающийся список для различных предопределенных конфигураций отладки. Выберите cl.exe для сборки и отладки активного файла.

VS Code создает файл launch.json, открывает его в редакторе, строит и запускает "helloworld".

Настройка программы определяет программу, которую вы хотите отлаживать. Здесь указывается активная папка с файлами $ и активное имя файла с расширением .exe $.exe , которое, если активным файлом является helloworld.cpp , будет helloworld.exe .

По умолчанию расширение C++ не добавляет никаких точек останова в исходный код, а для параметра stopAtEntry установлено значение false . Измените значение stopAtEntry на true, чтобы отладчик останавливался на основном методе при запуске отладки.

Начать сеанс отладки

  1. Вернитесь к файлу helloworld.cpp, чтобы он стал активным.
  2. Нажмите F5 или в главном меню выберите «Выполнить» > «Начать отладку». Прежде чем вы приступите к просмотру исходного кода, обратите внимание на несколько изменений в пользовательском интерфейсе:

Интегрированный терминал отображается в нижней части редактора исходного кода. На вкладке «Вывод отладки» вы видите вывод, указывающий на то, что отладчик запущен и работает.

Редактор выделяет первый оператор в основном методе. Это точка останова, которую расширение C++ автоматически устанавливает для вас:

В представлении «Выполнение» слева отображается отладочная информация. Вы увидите пример позже в этом руководстве.

В верхней части редактора кода появляется панель управления отладкой. Вы можете перемещать его по экрану, хватая точки с левой стороны.

Пошаговое выполнение кода

Теперь вы готовы приступить к выполнению кода.

Нажимайте значок Step over на панели управления отладкой, пока не будет выделен оператор for (const string& word : msg).

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

Нажмите Step over еще раз, чтобы перейти к следующему оператору в этой программе (пропустив весь внутренний код, который выполняется для инициализации цикла). Теперь в окне «Переменные» отображается информация о переменных цикла.

Снова нажмите Step, чтобы выполнить оператор cout. Примечание. Начиная с версии расширения за март 2019 г. выходные данные не отображаются до завершения цикла.

Если хотите, вы можете продолжать нажимать Step over до тех пор, пока все слова в векторе не будут напечатаны на консоли. Но если вам интересно, попробуйте нажать кнопку Step Into, чтобы просмотреть исходный код в стандартной библиотеке C++!

Чтобы вернуться к собственному коду, один из способов – продолжать нажимать кнопку "Перейти". Другой способ — установить точку останова в вашем коде, переключившись на вкладку helloworld.cpp в редакторе кода, поместив точку вставки где-нибудь в операторе cout внутри цикла и нажав F9. Красная точка появляется в поле слева, указывая на то, что в этой строке установлена ​​точка останова.

Затем нажмите F5, чтобы начать выполнение с текущей строки в заголовке стандартной библиотеки. Выполнение прервется на cout . Если хотите, вы можете снова нажать F9, чтобы отключить точку останова.

Настроить часы

Иногда вам может понадобиться отслеживать значение переменной во время выполнения вашей программы. Вы можете сделать это, установив наблюдение за переменной.

Поместите точку вставки внутри цикла. В окне Watch выберите знак «плюс» и в текстовом поле введите слово, которое является именем переменной цикла. Теперь просмотрите окно Watch, когда будете проходить цикл.

Добавьте еще одно наблюдение, добавив этот оператор перед циклом: int i = 0; . Затем внутри цикла добавьте следующий оператор: ++i; . Теперь добавьте часы для i, как вы делали это на предыдущем шаге.

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

Конфигурации C/C++

Если вам нужен больший контроль над расширением C/C++, вы можете создать файл c_cpp_properties.json, который позволит вам изменять такие параметры, как путь к компилятору, включаемые пути, стандарт C++ (по умолчанию C++ 17) и многое другое.

Вы можете просмотреть пользовательский интерфейс конфигурации C/C++, выполнив команду C/C++: Edit Configurations (UI) из палитры команд ( ⇧⌘P (Windows, Linux Ctrl+Shift+P )).

При этом открывается страница конфигураций C/C++. Когда вы вносите здесь изменения, VS Code записывает их в файл с именем c_cpp_properties.json в папке .vscode.

Visual Studio Code помещает эти параметры в файл .vscode\c_cpp_properties.json . Если вы откроете этот файл напрямую, он должен выглядеть примерно так:

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

Путь к компилятору

ПараметрcompilePath является важным параметром в вашей конфигурации. Расширение использует его для определения пути к файлам заголовков стандартной библиотеки C++. Когда расширение знает, где найти эти файлы, оно может предоставлять полезные функции, такие как интеллектуальное завершение и навигация «Перейти к определению».

Расширение C/C++ пытается указать вcompilePath местоположение компилятора по умолчанию на основе того, что оно находит в вашей системе. Расширение выглядит в нескольких общих местах расположения компилятора.

Порядок поиска по пути компилятора:

  • Сначала проверьте наличие компилятора Microsoft Visual C++Ope
  • Затем найдите g++ в подсистеме Windows для Linux (WSL)
  • Затем g++ для Mingw-w64.

Если у вас установлены g++ или WSL, вам может потребоваться изменить значениеcompilePath, чтобы оно соответствовало предпочитаемому компилятору для вашего проекта. Для Microsoft C++ путь должен выглядеть примерно так, в зависимости от установленной версии: "C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin /Hostx64/x64/cl.exe".

Повторное использование конфигурации C++

VS Code теперь настроен на использование компилятора Microsoft C++. Конфигурация применяется к текущей рабочей области. Чтобы повторно использовать конфигурацию, просто скопируйте файлы JSON в папку .vscode в новой папке проекта (рабочей области) и при необходимости измените имена исходных файлов и исполняемого файла.

Запуск VS Code вне командной строки разработчика

В некоторых случаях невозможно запустить VS Code из командной строки разработчика для Visual Studio (например, в сценариях удаленной разработки через SSH). В этом случае вы можете автоматизировать инициализацию командной строки разработчика для Visual Studio во время сборки, используя следующую конфигурацию tasks.json:

Примечание. Путь к VsDevCmd.bat может отличаться в зависимости от версии Visual Studio или пути установки. Вы можете найти путь к VsDevCmd.bat, открыв командную строку и запустив каталог "\VsDevCmd*" /s .

Устранение неполадок

Термин «cl.exe» не распознается

Если вы видите сообщение об ошибке "Термин "cl.exe" не распознается как имя командлета, функции, файла сценария или исполняемой программы", обычно это означает, что вы запускаете VS Code вне команды разработчика. Подсказка для Visual Studio и VS Code не знает путь к компилятору cl.exe.

VS Code необходимо либо запускать из командной строки разработчика для Visual Studio, либо задачу необходимо настроить для запуска вне командной строки разработчика.

Читайте также: