Программирование ARM VSCode FAQ Fri, April 26 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

VSCode FAQ Печать
Добавил(а) microsin   

Ознакомительная информация, часто задаваемые вопросы по среде разработки Visual Studio Code.

[Общие вопросы]

Visual Studio Code это оптимизированный редактор кода, который поддерживает такие операции по разработке, как отладка, запуск задач и управление версиями кода. Он предоставляет только самые необходимые инструменты для быстрой отладки и разработки кода, оставляя более сложные рабочие процессы для полнофункциональных сред разработки, таких как Visual Studio IDE.

VS Code собирает данные по использованию и посылает их Microsoft, чтобы в будущем улучшить её продукты и сервисы. Более подробно об этом написано в соглашении приватности и документации по телеметрии.

Если вы не хотите отправлять данные по использованию, то можете установить настройку telemetry.telemetryLevel в off. Для этого перейдите в меню File -> Preferences -> Settings (macOS: Code -> Preferences -> Settings), найдите telemetry и установитеTelemetry: Telemetry Level в off.

Примечание: VS Code дает вам опцию установки расширений от Microsoft и от сторонних разработчиков. Эти расширения могут собирать свою собственную информацию по использованию, что не управляется настройкой telemetry.telemetryLevel.

VS Code использует фреймворк экспериментов (experiments), чтобы попробовать новые функции, или постепенно внедрить их. Фреймворк экспериментирования вызывает службу Microsoft, и поэтому experiments запрещается, когда telemetry запрещена. Однако если нужно запретить experiments независимо от настроек telemetry, то вы можете установить workbench.enableExperiments в false. Для этого в меню File -> Preferences 0> Settings (macOS: Code -> Preferences -> Settings), найдите experiments, и снимите галочку Workbench: Enable Experiments.

VS Code собирает данные о сбоях, которые могут произойти, и посылает их компании Microsoft, чтобы помочь улучшить её продукты и службы. Если вы не хотите посылать crash-данные для Microsoft, то можете поменять аргумент enable-crash-reporter на false.

Для этого откройте палитру команд Command Palette (Ctrl+Shift+P), запустите команду Preferences: Configure Runtime Arguments. Эта команда откроет argv.json для конфигурирования аргументов времени выполнения. Отредактируйте"enable-crash-reporter": false, перезапустите VS Code.

Теперь, когда действуют правила General Data Protection Regulation (GDPR), компания Microsoft обращает особое внимание на то, что относится к этому вопросу приватности очень серьезно. Это относится к самой Microsoft как к компании, и в частности к команде разработчиков VS Code.

Для поддержки GDPR:

● VS Code оповещает всех пользователей, что имеется опция сбора телеметрии и её отключение.
● Команда активно рассматривает и классифицирует данные всей отправленной телеметрии (задокументировано в базе кода OSS компании).
● Существуют действующие политики по хранению собранных данных, например crash-дампов.

VS Code "workspace" (рабочее пространство) это просто корневая папка вашего проекта. VS Code использует концепцию "workspace", чтобы рассматривать конфигурацию каждого проекта индивидуально. К конфигурации относятся, например, файлы настройки отладки, поиска заголовочных файлов, задачи. Файлы workspace сохраняются внутри корневой папки проекта, в подкаталоге .vscode. Также вы можете иметь у себя несколько корневых файлов проекта в одном VS Code workspace, эта возможность называется Multi-root workspaces.

Более подробно про рабочее пространство VS Code можно почитать в [8].

Да, у VS Code есть Portable Mode, позволяющий хранить настройки и данные в том же месте, где была произведена установка, например на флешке USB.

VS Code производит фоновую проверку, была ли инсталляция на диске изменена, и если это обнаружено, то на плашке будет отображен соответствующий текст с тегом [Unsupported]. Это может произойти из-за того, что некоторые расширения могут напрямую модифицировать (patch) VS Code, и такой способ наложения исправления не будет навсегда корректным и постоянным (будет действовать до следующего обновления) и это может вызывать трудно воспроизводимые в плане диагностики проблемы. Разработчики не пытаются блокировать такие патчи для VS Code, предупреждая вместо этого пользователей, что наложенный патч на среду VS Code означает её неподдерживаемую версию [unsupported]. Переустановка VS Code заменит измененные файлы и устранит это предупреждение.

Также вы можете увидеть сообщение [Unsupported], если файлы VS Code по ошибке были помещены на карантин или удалены антивирусом (для примера см. описание проблемы issue #94858). Проверьте настройки своего антивируса и переустановите VS Code, чтобы восстановить пропавшие файлы.

Примечание: эта врезка относится только к операционным системам macOS и Linux.

Когда среда VS Code запускается из терминала (например, командой code .), она обращается к настройкам окружения, определенных в файлах .bashrc или .zshrc (shell environment). Это значит, что функции наподобие tasks или debug targets также обращаются к этим настройкам.

Однако когда запуск производится через графический интерфейс пользователя (например, иконкой VS Code на macOS dock), запуск обычно происходит вне контекста шелла, и к этим настройкам окружения доступа нет. Это значит, что в зависимости от того, как была запущена среда разработки VS Code, вы можете не получить одно и то же рабочее окружение.

Чтобы разобраться с этим, когда запуск происходит через UI, среда VS Code запустит маленький процесс "resolve", чтобы прочитать shell environment, определенный в файлах .bashrc или .zshrc. Если после 10 shell environment все еще не был распознан, или распознавание по какой-то причине оказалось неудачным, VS Code оборвет процесс "resolve", произойдет запуск без настроек shell environment, и будет отображена ошибка наподобие следующей:

VScode unable resolve shell environment

Эта ошибка показывает, что распознавание shell environment было слишком долгим. Ниже показаны шаги, которые помогут разобраться с этой проблемой. Если вы видите другие ошибки при запуске, то создайте issue в техподдержке.

● Откройте файл shell startup, например в редакторе VS Code путем ввода ~/.bashrc или ~/.zshrc через Quick Open (Ctrl+P).
● Селективно закомментируйте потенциально долгие по выполнению операции (такие как nvm, если это имеется).
● Сохраните файл shell startup и полностью перезапустите VS Code.
● Продолжайте комментирование настроек shell startup, пока не пропадет описанная выше ошибка.

Примечание: хотя nvm это мощный и полезный менеджер пакетов Node.js, он может привести к долгой инициализации shell startup, если если при этом запускается. Можно рассмотреть другие альтернативы менеджера пакетов, такие как asdf, или поискать в Интернет советы по повышению производительности nvm.

Запуск VS Code из терминала. Если модификация shell environment не практична, то можно избежать фазы распознавания VS Code настроек shell environment, если запустить VS Code напрямую из полностью инициализированного терминала.

● Введите команду code в окне открытого терминала, что приведет к запуску VS Code с открытием последнего workspace.
● Ввод команды code . запустит VS Code с открытием текущей папки.

Electron shell, используемый средой Visual Studio Code, испытывает проблемы с некоторыми графическими ускорителями (graphics processing unit, GPU). Если при запуске VS Code отображается пустое главное окно, то можно попробовать запретить использования акселератора GPU при запуске VS Code путем добавления опции командной строки --disable-gpu.

code --disable-gpu

Когда вы открываете папку, VS Code будет искать обычные файлы проекта, чтобы обнаружить дополнительные инструменты - например, solution picker в полосе статуса (Status bar) для открытия решения. Если вы открываете папку с такими файлами, то поиск может занять довольно много времени, и отнять у CPU вычислительные ресурсы, в результате чего VS Code может замедлить свою работу. Разработчики планируют улучшить это поведение в будущем, однако сейчас вы можете исключить папки из проводника через настройку files.exclude, и они не будут искаться для файлов проекта:

    "files.exclude": {
        "**/largeFolder": true
    }

Microsoft завершила поддержку Windows 7 в январе 2020, и для этой версии операционной системы Windows больше не выпускаются обновления безопасности (security updates). Версии VS Code, начиная с 1.71 (август 2022) больше не работают на Windows 7, и необходимо обновить операционную систему, чтобы использовать более свежие версии VS Code.

VS Code не будет предоставлять свои обновления или исправления по безопасности на Windows 7, и версия VS Code 1.70.3 это последний релиз, доступный для пользователей Windows 7.

Меню File -> Prefereices -> Settings, нажмите Ctrl+F и введите в строке поиска indent и нажмите Enter. Будут отображены разделы настроек, где встречается это слово. Разверните раздел настроек Commonly Used, там будут отображены найденные настройки:

Editor: Insert Spaces, здесь поставьте галочку, если хотите чтобы вместо табуляции вставлялись пробелы.

Editor: Tab Size, здесь настройте количество вставляемых пробелов для табуляции.

[Расширения VSCode]

Файлы могут быть повреждены из-за факта, что у вас либо multi-root workspace, где одна папка является дочерней по отношению к другой, либо вы используете символьные ссылки (symlink) для открытия своего файла. Уменьшите количество папок в workspace до одной, и удалите символьную ссылку.

Без какой-либо конфигурации это расширение будет пытаться найти заголовки путем поиска по папке вашего workspace, и путем эмуляции поведения компилятора, который найден на вашем компьютере (например cl.exe/WSL/MinGW для Windows, gcc/clang для macOS/Linux). Если эта автоматическая конфигурация оказалась недостаточной, то вы можете изменить настройки по умолчанию путем запуска команды C/C++: Edit Configurations (UI). В этом инструменте вы можете поменять компилятор, который хотите эмулировать, пути поиска подключаемых файлов, определения препроцессора и много другое.

Или, если вы установили расширение системы сборки, которое влияет на расширение от Microsoft, то вы можете позволить этому расширению предоставить для вас конфигурации. Например расширение CMake Tools может конфигурировать проекты, которые используют систему сборки CMake. Используйте команду C/C++: Change Configuration Provider... для разрешения любому такому расширению предоставить конфигурации для IntelliSense.

Третья опция для проектов без поддержки расширения системы сборки использовать файл compile_commands.json, если ваша система поддерживает генерацию этого файла. В секции "Advanced" интерфейса конфигурации (Configuration UI) вы можете предоставить путь до файла compile_commands.json, и расширение будет использовать информацию компиляции, перечисленную в этом файле для конфигурирования IntelliSense.

Примечание: если расширение не может разрешить какую-либо директиву #include в вашем исходном коде, то оно не будет отображать информацию о привязке в теле исходного файла. Если вы просмотрите окно Problems в VS Code, то увидите больше информации о том, какие файлы расширение не смогло найти. Если вы хотите все равно отображать информацию привязки, то поменяйте значение настройки C_Cpp.errorSquiggles.

Чаще всего причина в отсутствии путей поиска подключаемых файлов и отсутствии определений. Самый простой способ исправить это зависит от платформы.

Linux/Mac: установите intelliSenseMode": "clang-x64 or intelliSenseMode": "gcc-x64 и compilerPath в c_cpp_properties.json в путь до вашего компилятора.

Windows: если вы используете компилятор Microsoft C++, то установите intelliSenseMode": "msvc-x64, но не добавляйте свойство compilerPath в c_cpp_properties.json. Если вы используете Clang для Windows, то установите intelliSenseMode": "msvc-x64, и compilerPath в c_cpp_properties.json на путь до вашего компилятора.

Это две настройки в c_cpp_properties.json, и они могут привести к путанице.

includePath. Это массив строк для путей поиска подключаемых файлов, используемых Default-подсистемой IntelliSense. Эта новая подсистема предоставляет функции IntelliSense, учитывающие семантику, и она будет заменять Tag Parser, на котом работало расширение с момента первого релиза. IntelliSense сейчас дает подсказки и красные подчеркивания на ошибках в окне редактора кода. Остальные функции (например автозавершение кода, подсказка по сигнатуре, Go to Definition, ...) реализованы с использованием базы данных Tag Parser, так что все еще важно правильно установить browse.path.

Пути, которые вы указываете в includePath, такие же, которые вы посылаете компилятору через опцию командной строки -I. Когда обрабатываются ваши исходные файлы, подсистема IntelliSense добавит эти пути к файлам, указанным вашими директивами #include, и попытается разрешить эти пути. По этом путям не осуществляется рекурсивный поиск.

browse.path. Это массив строк путей, используемый Tag Parser ("browse engine"). Эта подсистема будет рекурсивно просматривать все файлы в указанных путях, и отслеживать их как потенциальные возможные элементы при разборе тегов в папке вашего проекта. Для запрета рекурсивного просмотра пути вы можете добавить /* к строке пути.

Когда вы в первый раз открываете workspace, расширение добавит ${workspaceFolder} в оба массива. Если это нежелательно, то вы можете открыть свой c_cpp_properties.json и удалить строку с ${workspaceFolder}.

Начиная с версии 0.12.3 расширения, имеется команда для сброса вашей базы данных IntelliSense. Откройте Command Palette (Ctrl+Shift+P) и выберите команду C/C++: Reset IntelliSense Database.

Сервер языка кэширует информацию о подключенных файлах заголовка, чтобы повысить производительность IntelliSense. Когда вы редактируете файлы C/C++ в папке своего workspace, сервер языка будет сохранять файлы кэша в папку ipch. По умолчанию папка ipch сохраняется в директории пользователя. На Windows она сохраняется в %LocalAppData%/Microsoft/vscode-cpptools, на Linux в $XDG_CACHE_HOME/vscode-cpptools/ (или в $HOME/.cache/vscode-cpptools/, если не определена переменная окружения XDG_CACHE_HOME), и на macOS в $HOME/Library/Caches/vscode-cpptools/. При использовании директории пользователя в качестве пути по умолчанию, это создаст одно место хранения для кэша на одного пользователя расширения. Поскольку на место кэша наложен предел по размеру, одно место кэша на одного пользователя ограничивает использование дискового пространства под кэш для всех, кто использует значение настройки по умолчанию.

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

"C_Cpp.intelliSenseCachePath": < строка>

Эта настройка позволит вам установить workspace или глобально переназначить путь до кэша. Например, если вы хотите использовать одно и то же общее место для кэша для всех папок workspace, то откройте настройки VS Code и добавьте свою настройку пользователя (User setting) для IntelliSense Cache Path.

"C_Cpp.intelliSenseCacheSize": < number>"

Эта настройка позволит установить лимит объема кэша. Если вы используете общее хранилище кэша, как было объяснено выше, то все еще можно увеличить или уменьшить лимит, однако убедитесь, что добавили в настройках User setting для IntelliSense Cache Size.

Если вы не хотите использовать функцию кэширования IntelliSense, которая улучшает производительность IntelliSense, то можете запретить эту функцию, установив 0 для настройки IntelliSense Cache Size (или "C_Cpp.intelliSenseCacheSize": 0" в JSON settings editor).

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

В главном меню выберите Run > Add Configuration... Будет открыт файл launch.json, где нужно отредактировать новую конфигурацию. Установки по умолчанию возможно сработают за исключением того, что вам необходимо указать настройки программы.

Подробнее про конфигурирование отладчика см. [7].

Разрешение символов отладки зависит от используемого компилятора. Ниже показаны настройки для некоторых компиляторов и опции компилятора, необходимые для разрешения символов отладки. В случае проблем изучите документацию на ваш компилятор для добавления информации отладки символов в вывод компилятора. Это может быть некий вариант опций -g или --debug.

Clang (C++)

● Если вы запускаете компилятор вручную, то добавьте к его командной строке опцию --debug.
● Если вы используете скрипт то убедитесь, что установлена переменная окружения CXXFLAGS. Например, export CXXFLAGS="${CXXFLAGS} --debug".
● Если вы используете CMake то убедитесь, что установлена переменная окружения CMAKE_CXX_FLAGS. Например, export CMAKE_CXX_FLAGS=${CXXFLAGS}.

Clang (C)

См. выше Clang C++, но используйте CFLAGS вместо CXXFLAGS.

gcc или g++

Если запускаете компилятор вручную, то добавьте опцию -g к его командной строке.

cl.exe

Символы находятся в файле *.pdb.

Код не останавливается на breakpoint. Когда вы запустили отладку, если ваши точки останова не распознаны (возле них нет залитого красного кружка) или на них не останавливается отладка, то возможно необходимо настроить вывод информацию символов отладки во время компиляции.

Отладка запускается, но все строки в трассировке стека серые. Если ваш отладчик показывает серым stack trace, не останавливается на breakpoint, или символы в call stack серые, то в ваш исполняемый бинарник скомпилирован без информации отладки (без debug symbols).

[Ссылки]

1. Visual Studio Code FAQ site:visualstudio.com.
2. VSCode C/C++ Extensions FAQ site:visualstudio.com.
3. VSCode Remote Development FAQ.
4. VSCode Source Control FAQ site:visualstudio.com.
5. VSCode Using GCC with MinGW site:visualstudio.com.
6. Using C++ and WSL in VS Code site:visualstudio.com.
7. Configure C/C++ debugging site:visualstudio.com.
8. What is a VS Code "workspace"? site:visualstudio.com.
9VSCode: использование файла настроек c_cpp_properties.json.
10. Интерфейс командной строки Visual Studio Code.
11. VScode: как добавить путь поиска подключаемых файлов.

 

Добавить комментарий


Защитный код
Обновить

Top of Page