動機
久々にC++を触る機会があり、デバッグの際に止まらずに終了してしまう、よくあるトラブルの対処法を忘れていたので、備忘録として記載しておきます。
追記:2018/04/18 14:19
環境
Visual Studio Community 2017
魔法の1行
以下の1行をストップしたい場所に入れ、stdio.hをインクルードするだけです。
(初歩的なプログラムの場合、returnの上に入れるのが普通です)
getchar()
このコマンドは本来一文字読み取る関数ですが、一度入力待ちになり、何かキーを押すと再度動くので、擬似的なブレークポイントとして機能します。
プログラム例
16進数で入力された数字を10進数で表示する簡単なコードです。
#include <stdio.h>
int main() {
int variable;
variable = 0x12345678;
printf("%d", variable);
getchar(); // 一時停止
return 0;
}
上手くいけば、以下のように表示され、何かキーを押すと終了するようになると思います。
305419896
追記:もう一つの魔法の1行(?)
別解として、以下があります。(y_itamoto様コメントありがとうございます。)
system("pause");
これは1行で「続行するには…」を表示してくれる優秀ちゃんです。
ただ、正確には1行ではなく、
#include <stdlib.h>
を先頭に追加する必要があります。
蛇足ですが、僕も最初にこれを発見したのですがエラーを吐いてしまい(その時インクルード部分のスペリングミスとは気づかなかった)、先程紹介した方法に行き着くことになりました。
多分コメントで指摘されるまで気づくことなかったかも…
プログラム例 その2
#include <stdio.h>
#include <stdlib.h>
int main() {
int variable;
variable = 0x12345678;
printf("%d\n", variable);
system("pause"); //一時停止
return 0;
}
上述したプログラムと同じ動作をするはずです。
最後に
このコマンドを書いた後に、「別にブレークポイントでよくね?」って思った