質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

GDB

GDBはGNUソフトウェアシステムのための標準的なデバッガーです。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

9535閲覧

VScodeデバッグ時における入力と出力ができない

ebhri

総合スコア2

GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

GDB

GDBはGNUソフトウェアシステムのための標準的なデバッガーです。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/07/20 13:29

前提・実現したいこと

VScodeでデバッグすると特にエラーは見られないのですが出力がターミナルにもデバッグコンソールにも見当たりません。デバッグコンソールには長い文が表示されますが関係あるのでしょうか。競技プログラミングをしているのでcin, coutでの標準入出力の方法を教えていただけると幸いです。使用言語はC++です。

発生している問題・エラーメッセージ

デバッグしたコード

#include<bits/stdc++.h>
using namespace std;

int main(){

int a, b;cin >> a >> b;
cout << a + b;

}

上記のコードのデバッグ時に下のような表示がされ出力は表示されません。

=thread-group-added,id="i1"
GNU gdb (GDB) 7.6.1
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "mingw32".
For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/.
Warning: Debuggee TargetArchitecture not detected, assuming x86_64.
=cmd-param-changed,param="pagination",value="off"
=cmd-param-changed,param="args",value="< input.txt < output.txt"
[New Thread 12724.0x1328]
[New Thread 12724.0x33fc]
[New Thread 12724.0x1ecc]
[New Thread 12724.0x3438]
Loaded 'C:\WINDOWS\SysWOW64\kernel32.dll'. Symbols loaded.
Loaded 'C:\WINDOWS\SysWOW64\KernelBase.dll'. Symbols loaded.
Loaded 'C:\WINDOWS\SysWOW64\msvcrt.dll'. Symbols loaded.
Loaded 'C:\MinGW\bin\libgcc_s_dw2-1.dll'. Symbols loaded.
Loaded 'C:\MinGW\bin\libstdc++-6.dll'. Symbols loaded.
The program 'C:\MinGW\bin\vscode\main.exe' has exited with code 0 (0x00000000).

試したこと

launch.jsonに"console": "integratedTerminal"と加筆しましたがProperty console is not allwedと表示されてしまいます。また"externalConsole"をtrueに設定するとデバッグ時に入力を求めるウインドウが表示されるようになりましたが入力しても出力はやはり見当たりません。

VScode0.2.0, Windows10

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

launch.jsonで「"externalConsole": true」にすると、コンソールウィンドウが開いて、入出力はそちらになります。コンソールウィンドウはプログラムが終了すると自動的に閉じますので、結果も消えてしまいます。

「"externalConsole": false」にすれば、ターミナルで入出力が行われますので結果が残ります。
入出力が行われるのは「デバッグ コンソール」ではなく「ターミナル」です。「ターミナル」は幾つか開いている可能性があります。切り替えてデバッグしている「ターミナル」を見つけてください。

あるいは「"externalConsole": true」のままで、最後の}の行にブレークポイントを置いて、出力を確認してからプログラムを終了すればいいんじゃないかと思います。

投稿2020/07/20 14:47

Bull

総合スコア986

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ebhri

2020/07/21 00:58

回答ありがとうございます。"externalConsole": falseにしてデバッグしてみたところ新しいターミナルが開きましたがそこにはなにも入力することができませんでした。一応すべてのターミナルで入力しようとしましたがうまくいきませんでした。また、"externalConsole": trueにし、ブレークポイントを置いて試したところ入力する場所が現われるのですがそこに文字を打つことはできませんでした。理由はわかりませんがブレークポイントを置かずにデバッグすると、もちろん出力は表示されませんが現れるウインドウに入力することはできるみたいです。参考までにlaunch.jsonを載せておきますので入出力について再度教えていただければ幸いです。 { // IntelliSense を使用して利用可能な属性を学べます。 // 既存の属性の説明をホバーして表示します。 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/main.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "C:\MinGW\bin\gdb.exe", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "C/C++: g++.exe build active file" } ], }
Bull

2020/07/21 02:24

ブレークポイントはどこに置いたのでしょうか? ブレークポイントでプログラムが止まっていたら、当然入力はできません。 ステップ実行もできないということでしょうか? 入力なしで、プログラムが終了したということでしょうか?
Bull

2020/07/21 02:37

launch.json でデバッグするプログラムを指定しますが、"${workspaceFolder}/main.exe" となっているので、常に "main.exe" をデバッグすることになります。 これは意図した設定でしょうか? VScode のバージョンは 0.2.0 で間違いないでしょうか? 最新バージョンは 1.47.2 であろうと思います。 もし本当に 0.2.0 であるのならば、最新のものに更新してみては如何でしょうか? それから、gcc のバージョンはいくつでしょうか?
ebhri

2020/07/21 03:32

先ほど試行錯誤していたところ"externalConsole": trueでデバッグ実行時に出てきたウインドウに数字を入力しました。そのウインドウに文字を打つことができなかったと申し上げたのですが入力した数字が表示されていないだけでどうやら入力はされているようです。すると先ほど教えていただいた場所のブレークポイントで止まり、入力したウインドウでEnterを押すと入力のすぐ下に出力が正しく表示されました。 ${workspaceFolder}/main.exeの設定に関してですが意図していなかったのですがファイル名をmain.cppにしていたからかうまくいきました。これはファイル名をmainに常にしていなければならないということなのでしょうか。 VScodeのバージョンに関してですがlaunch.jsonに書かれたバージョンを書き換えたつもりはないのでひょっとすると古いバージョンを使用しているのかもしれません。もしよければバージョンを更新する方法も教えていただけると助かります。 gccのバージョンは9.2.0でした。 質問を重ねてしまい申し訳ないです。よろしくお願いします。
Bull

2020/07/21 04:22

コンパイル時に常に "main.exe" という実行ファイルを作成するようなっていれば、デバッグは問題ありません。 コンパイルオプションがどうなっていかわかりませんが、ソースファイルと同じファイル名の実行ファイルが生成されるのではあれば、このままでは "main.cpp" 以外のプログラムのデバッグはできないです。 当方の VScode は、自動更新が "on" になっているので、手動での更新をやったことがないのですが、メニューの [ヘルプ]→[更新の確認 ...]で出来るんじゃないかと思います。 VScode のバージョンはメニューの[ヘルプ]→[バージョン情報]で確認出来ます。
ebhri

2020/07/21 11:53

バージョンを確認したところ最新のものになっていました。 急ぎではないのでお時間のある時で構わないですが、もう一つ質問させてください。 先に申し上げた方法で一応デバッグはできたのですが出力のあと一度デバッグを終了してもう一度デバッグしないと新たに入力することができないようです。ですのでターミナルからの入出力を試みました。"externalConsole": falseに設定しデバッグを開始したところデバッグが途中で中断しターミナルに青い文字で三行くらいの文が表示されました。デバッグが中断された(中断されたとは言いましたが再開するというボタンはなく停止というボタンがあるだけです)ことから入力を待っているのかと思いターミナルに数字を入力したところ全く入力した数字が表示されませんでした。その後再度F5を押すと突如先ほど入力した数字がターミナルに表示され「式またはステートメントのトークン’5’を使用できません」と出ます。このとき使用したコードは質問にあるものと同じで「4 5」とだけ入力しました。
Bull

2020/07/21 23:44

「式またはステートメントのトークン’5’を使用できません」 このメッセージは PowerShell からのもののようです。 ということは、デバッグしているプログラムには入力されていなくて、プログラムが終了してからターミナルの PowerShell への入力になっています。なぜそうなっているのかはよく判らないです。 標準入力をリダイレクトしたときの状況に似ていますが、launch.json を見る限りは、リダイレクトはされていないと思います。 VScode に問題がないとすれば、デバッガ (gdb) の問題かもしれませんが、MinGW はいろいろなディストリビューションがあり、バージョンも様々です。 当方の環境では問題なくデバッグが出来ているので、これ以上はよく判らないです。 ちなみに、当方の環境は MinGW-W64 で、gdb のバージョンは 8.1 です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問