#c #visual-studio-code #terminal #c 17 #integrated
#c #visual-studio-code #Терминал #c 17 #Интегрированный
Вопрос:
Ранее, когда я пытался выполнять отладку в VSCode в Windows 10, используя расширение C / C и g и gdb в MinGW32, я смог нажать клавишу F5 (горячая клавиша «начать отладку» по умолчанию), настроить свои задачи.json и launch.json, и вывод программы появится во встроенном терминале, а также любые запросы на ввод. Это было особенно полезно, когда мне нужно было также вводить данные в программу во время ее отладки для школьных занятий, не открывая внешнюю оболочку. Однако это уже не так, и я не понимаю, почему, поскольку я ничего активно не менял, чтобы это произошло, и теперь весь вывод программы отображается в консоли отладки, где я не могу ввести ввод. Я бы предпочел восстановить то, что я описал выше, где весь вывод / ввод происходит во встроенном терминале, но я не уверен, как я это сделаю. Я также пытался отлаживать программы на Python в VSCode, используя доступное расширение Python, но вывод инструкций print отображается во встроенном терминале, где я и ожидал. Кроме того, расширение Code Runner работает с моей текущей проблемой, но я бы предпочел восстановить свою рабочую среду до ее предыдущего состояния. Моя текущая версия VSCode — 1.49.2, моя версия расширения C / C — 1.0.1, а моя версия расширения Python — 2020.9.111407. Я также использую g .exe (MinGW.org Сборка GCC-20200227-1) 9.2.0 и GNU gdb (GDB) 7.6.1
Для максимальной наглядности компиляция и отладка из встроенного терминала с помощью ручного ввода команд g и gdb работает нормально, но F5 больше не выдает поведение, которое я ожидал.
Я убедился, что в моем файле launch.json правильно установлен параметр «externalConsole»: false, для моего параметра Terminal: Explorer установлено значение «интегрированный», а для Terminal> Integrated: Inherit env установлено значение true. Я попытался переключить все эти параметры, запустив в режиме администратора, запустив в режиме совместимости для Windows 8, откат к старым версиям расширений, которые я использую, и ничто не изменило это поведение.
tasks.json:
{
"tasks": [
{
"type": "shell",
"label": "C/C : g .exe build active file",
"command": "C:\Programming\MinGW32\bin\g .exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
],
"version": "2.0.0"
}
launch.json:
{
// 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": "g .exe - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\Programming\MinGW32\bin\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C : g .exe build active file"
}
]
}
test.cpp:
#include <iostream>
using namespace std;
int main() {
cout << "Hellon";
system("pause");
return 0;
}
Это то, что происходит, когда я нажимаю клавишу F5 в файле Python, такого поведения я и ожидал.
Это то, что происходит, когда я нажимаю F5 в своем cpp-файле, вывод не отображается во встроенном терминале.
Вместо этого он появляется здесь .
Я решил опустить код из моего файла .py на первом изображении из-за его «простоты
ОБНОВЛЕНИЕ (28 сентября 2020 г.): по-видимому, эта проблема была задокументирована здесь, и решение, которое сработало для меня, состояло в том, чтобы установить mingw-w64 из их sourceforge, а затем обновить мой путь mingw в системных переменных среды.
Комментарии:
1. Почему бы вам вместо этого не попробовать Visual Studio Community? Он бесплатный и обладает отличными возможностями для отладки.
2. У меня также есть сообщество на моем домашнем рабочем столе, но в последнее время я чаще использую VSCode, поскольку мне приходилось использовать несколько разных языков для курсовых работ, и это легкая среда IDE, которая загружается на разумных скоростях на компьютерах моего кампуса. У меня есть переносная установка на USB-накопителе, и она подходит для моего варианта использования. При этом я, вероятно, в будущем перейду в сообщество для любой разработки, которую я делаю на своей собственной машине, спасибо за рекомендацию!
Ответ №1:
Единственное решение, которое я нашел, — это установить "externalConsole": true,
launch.json
, вместо этого работая во внешней консоли.