Возьмите простой файл 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 где угодно.
Правые боковые вкладки:
cppdbg: temp пустоTask - g++ build active fileсодержаниеКак это исправить?
Настраивать: VS Code 1.33.1 (официальная сборка Snap) в Ubuntu 18.04
cout << "Hello World\n"; или даже лучше cout << "Hello World" << endl;. endl выводит новую строку и очищает поток.
Спасибо, установка endl сработала (\n не сработала), но это очень странное поведение VSCode.
Это не поведение кода, ваша операционная система буферизует вывод перед печатью на консоль, это совершенно нормально и довольно универсально для всех платформ.
@john, кажется, недавно появилась противоречащая информация об использовании std::endl, см. ACCU Overload 149 - Не использовать std::endl. Я не думаю, что это шоу-стоппер в любом случае, но любопытен ваш комментарий.
@DavidC.Rankin Я предполагаю, что проблема ОП в том, что он не сбросил поток. В статье предлагается использовать явное flush вместо endl, если требуется сброс. Это просто стилистическая проблема. Как и вы, я не вижу в этом ничего особенного,
@GaurangTandon Можете ли вы сказать мне, где вы видите вывод cout bcz. Я нигде не вижу?
@Jos Вы должны найти его во встроенном терминале vscode или в собственной внешней консоли, в зависимости от ваших настроек "externalConsole" в launch.json.





По полезным комментариям выше, также приведу Алан:
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.
Вероятно, добавив новую строку в строку. Вывод может быть буферизован.