Программа VS Code C++ не отображает вывод во время отладки

Возьмите простой файл C++, подобный этому:

#include <iostream>
using namespace std;

int main(void)
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cout << "Hello World";
    return 0;
}

Установите точку останова на return 0. Настройте эту конфигурацию запуска:

{
    "name": "g++ build and debug active file",
    "type": "cppdbg",
    "request": "launch",
    "program": "${fileDirname}/${fileBasenameNoExtension}",
    "args": [],
    "stopAtEntry": false,
    "cwd": "${workspaceFolder}",
    "environment": [],
    "externalConsole": false,
    "MIMode": "gdb",
    "setupCommands": [
        {
            "description": "Enable pretty-printing for gdb",
            "text": "-enable-pretty-printing",
            "ignoreFailures": true
        }
    ],
    "preLaunchTask": "g++ build active file",
    "miDebuggerPath": "/usr/bin/gdb"
 }

Перейдите на вкладку отладки на левой боковой панели и нажмите зеленую кнопку запуска.

Ожидаемая ситуация: Я где-то вижу Hello World.
Фактическая ситуация: Я могунет видеть Hello World где угодно.

Правые боковые вкладки:

  • Выход: пусто
  • Проблемы: пусто
  • Терминал 1: cppdbg: temp пусто
  • Терминал 2: Task - g++ build active fileсодержание
  • Консоль отладки: содержание

Как это исправить?


Настраивать: VS Code 1.33.1 (официальная сборка Snap) в Ubuntu 18.04

Вероятно, добавив новую строку в строку. Вывод может быть буферизован.

Sami Kuhmonen 14.05.2019 07:50
cout << "Hello World\n"; или даже лучше cout << "Hello World" << endl;. endl выводит новую строку и очищает поток.
john 14.05.2019 07:58

Спасибо, установка endl сработала (\n не сработала), но это очень странное поведение VSCode.

Gaurang Tandon 14.05.2019 08:06

Это не поведение кода, ваша операционная система буферизует вывод перед печатью на консоль, это совершенно нормально и довольно универсально для всех платформ.

Alan Birtles 14.05.2019 08:19

@john, кажется, недавно появилась противоречащая информация об использовании std::endl, см. ACCU Overload 149 - Не использовать std::endl. Я не думаю, что это шоу-стоппер в любом случае, но любопытен ваш комментарий.

David C. Rankin 14.05.2019 09:01

@DavidC.Rankin Я предполагаю, что проблема ОП в том, что он не сбросил поток. В статье предлагается использовать явное flush вместо endl, если требуется сброс. Это просто стилистическая проблема. Как и вы, я не вижу в этом ничего особенного,

john 15.05.2019 08:38

@GaurangTandon Можете ли вы сказать мне, где вы видите вывод cout bcz. Я нигде не вижу?

ajaysinghnegi 14.08.2019 17:25

@Jos Вы должны найти его во встроенном терминале vscode или в собственной внешней консоли, в зависимости от ваших настроек "externalConsole" в launch.json.

Gaurang Tandon 14.08.2019 17:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
8
3 859
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

По полезным комментариям выше, также приведу Алан:

It's not vs codes behaviour, your operating system buffers output before printing to the console, this is entirely normal and fairly universal across all platforms

Таким образом, мне нужно было добавить дополнительный std::endl к моему утверждению std::cout.

Другие вопросы по теме

Похожие вопросы