Вывод программы больше не отображается во встроенном терминале

#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 , вместо этого работая во внешней консоли.