[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
今期ももう終わりですね
そしてまた去年の同じ時期のアニメがひどかったことを思い出す
あと募集用の告知を1番上に書いてるのにレスポンスがない
とりあえず前回の記事は結構つまらなかったと思いますが、今回から暫くはデバッグ編に行きたいと思います
前回よりはつまらなくないはず。便利だし
最初はその中でもブレークポイントに重点を置いていきます
ブレークポイント基本編です
●ブレークポイントとは
プログラムの実行を一時停止する機能、みたいなカンジです
●できること
特定の場所での変数の中身などをチェックして、プログラムが思った通りの挙動をしているか確かめることができます
脳内でのトレースには限界があったり、見落としがあったりするので、超便利な機能です。ベンリーくんです、できる子です
●説明に使うテストプログラムについて
とりあえずデバッグ編用にあほみたいなテストプログラム組みました
コメントないですが、構造体解る程度で完全にトレースできるうえに、デバッグ編で説明するだいたいのことが説明できるものにはできたかと思います
内用的には、入力した数値の10倍の値を掛け算を使わずに計算し、出力ウィンドウに出力する意味不明なプログラムです
出力ウィンドウについては、ブレークポイント編が終わったら説明する予定
ソースコードはこんなん
#include <stdio.h>
#include <windows.h>
struct tagDATA{
int in ;
int out ;
};
void Func(struct tagDATA data);
int main(void){
int i ;
struct tagDATA data ;
do{
printf("整数を入力=>");
scanf_s("%d", &data.in);
data.out = 0;
for( i = 0; i < 10; i ++ ){
data.out += data.in;
}
Func(data);
}while( -1 != data.in );
return 0;
}
void Func(struct tagDATA data){
char str[32] ;
sprintf_s(str, sizeof(str), "sum:%d\n", data.out);
OutputDebugStr(str);
return;
}
まず実行する前に、ソースコードの左側にあるスペースをクリックすると、その場所に赤い●が出てきます
それができたら、VisualStudioでプログラムをF5を押して実行
そしたらプログラムが赤い●を置いた行で一時停止します
で、その赤い●の中に黄色い矢印が出ます
この状態になると、VisualStudio側を操作しない限り、プログラムは動きません
この状態では色々できますが、現段階では1つだけ紹介しておきます
マウスカーソルを変数の上に重ねると、変数の値が見れます
画像では宣言しただけでまだ初期化していないので、変な値が入ってますね
とりあえず、今のままだとずっとプログラムが終わらないので、VisualStudioを操作したいと思います
ショートカットキーがあるので強制ではないですが、画像のツールバーが表示されていない場合は、赤枠で囲んだ子を出しておくといいと思います
[表示]の[ツールバー]の[デバッグ]をクリックしたら表示されます
●まずはステップオーバー
ツールバーのボタンを全て表示しているなら、左から7番目にあるボタンです
ショートカットキーはF10
押してみると、黄色い矢印が次に処理される行に移動します
ステップオーバーは関数の中には入らず、1行ずつプログラムを実行します
つまり黄色い矢印は、現在実行中の行なのです
で、1行ずつ進めていると、scanfの入力待ちになるので、適当な整数を入力します
そのままFuncの行まで進めます
めんどくさかったら、Funcの行にブレークポイントを置いて、さっきのツールバーの再生マークを押すか、F5キーを押すと、再開するので、次のブレークポイントまで実行されます
●次はステップイン
ステップオーバーのボタンのすぐ左のボタン
ショートカットキーはF11
そうすると今度は実行位置がFunc関数の中に入ります
ステップインは、関数の中にも入れます
●最後にステップアウト
ステップオーバーのすぐ右のボタン
ショートカットキーはShift + F11
そうすると今度は一瞬で関数を抜けます
関数を抜けるところまで実行します
デバッグを終了したい時は、プログラムを終了させる以外にも、ツールバーの停止マークを押すか、Shift + F5を押すと、そこでデバッグ実行を終了します
今回のまとめ
・ブレークポイントを置くと、そこで実行を一時停止できる
・一時停止中は変数の中身を見られる
・一時停止後は、普通に再開する以外にも、1行ずつ処理をトレースできる
ステップオーバー | 関数の中には入らず、1行ずつ次に処理される行に進む |
ステップイン | 1行ずつ次に処理される行に進むが、関数の中にも入る |
ステップアウト | 実行中の関数を呼び出した関数に戻るまで進む |
なんか細かく説明しすぎて長くなった感があるケド、次はこのブレークポイントをただソースコード上に置く以外の使い方をしたいと思います
あと、ブレークポイントで止まらない、という場合はたいていReleaseで実行してると思います
理由についてはこちらで軽く触れてます
COMMENT