vc-2. Visual Studio C++ のデ
バッガー
(Visual Studio C++ の機能と操作演習,
全5回)
1
金子邦彦
https://www.kkaneko.jp/pro/vc/index.html
Visual Studio C++のデバッガーを使用し、プログラム
の実行を制御しながら変数の変化と処理の流れを確認す
る技法の習得。
【学習内容の構成】
1. デバッガーの機能:ブレークポイントによるプログ
ラム実行の中断、トレース機能による変数値の表示
2. ステップ実行機能:ステップオーバー(F10)、ス
テップイン(F11)、ステップアウト(Shift+F11)
による1行単位の実行制御
3. 変数の変化とプログラム実行の流れ:ローカルウィ
ンドウを用いた変数値の監視、繰り返し処理におけ
る値の変化の追跡
• 前提:Visual Studio 2015の基本操作、Win32コンソー
ルアプリケーションの作成、C++の基本文法(変数、
代入、for文)
• 意義:プログラムの不具合(バグ)発見・修正能力の
向上、プログラム動作の可視化による理解の深化
2
2-1 デバッガーの機能
3
2-1 デバッガー
デバッガーとは、プログラムの不具合(バグ)の発
見や修正を支援するソフトウェアのこと
4
主な機能
◆ ブレークポイント機能: プログラムの実行中断
◆ トレース機能: プログラム実行中に変数の値などを表示
※ バグを自動的に取り除いてくれるわけではない
Visual Studio 2015 でのブレークポイント設
定手順
5
ブレークポイントとは、
プログラムの実行を中断
させたい行.複数設定可
ブレークポイントを解除したい
ときは赤丸をクリック
※ 同様の操作で、ブレークポ
イントの設定もできる
① 「return 0;」の行を
マウスでクリック
② 「デバッグ」→
「ブレークポイント
の設定/解除」
③ ブレークポイン
トが設定されるの
で確認
赤丸
Visual Studio 2015 でのデバッガー起動手順
6
ブレークポイントが設定され
た状態で、デバッガーを起動
しようとしている
形が変化! これは、プログ
ラムの実行が、ここで中断し
ていることを示す
① 「デバッグ」
→ 「デバッグの開始」
パソコン演習
• Visual Studio 2015 で「return 0;」の行にブレーク
ポイントを設定しなさい
• Visual Studio 2015 でデバッガーを起動しなさい.
「return 0;」の行で、実行が中断することを確認
しなさい
• あとで使うので、中断したままにしておくこと
7
2-2 ステップ実行機能
8
2-2 ステップ実行機能
ステップ実行機能を使うことで、
• 変数の値の変化
※ 変数名と値の対応表
• メモリ中のデータの変化 ※ ダンプリスト形式
9
変数 x の値が 0 から 3 に変化
<ステップ実行機能で表示できる>
ステップ実行の種類
• ステップオーバー F10キー
• プログラム実行を1行進める.関数の中に入らない
• ステップイン F11キー
• プログラム実行を1行進める.関数の中に入る
• ステップアウト Shift と F11キー同時押し
• 関数の外に出る
10
※ 「関数」は、
プログラミング言語の関数のこと
Visual C++ のソースファイル例
11
自動生成されたプログラムを活用(4行追加するだけ)
← 4行追加
Visual C++ のソースファイル例
12
※ 「static int x, y, z;」の「static」は、変数 x, y, z のメモリ
への格納法をコントロールするキーワード
変数 x に値 3 をセット
変数 y に値 4 をセット
x と y の値を足して、
結果を z に格納
変数の値の変化
13
この行で、 x の値は 3 に変化
この行で、 y の値は 4 に変化
この行で、 z の値は 7 に変化
パソコン演習
• Visual Studio 2015 を起動しなさい
• Visual Studio 2015 で、Win32 コンソールアプリ
ケーション用プロジェクトを新規作成しなさい
14
プロジェクトの「名前」は何でもよい
ステップオーバー機能
Visual Studio 2015 で Win 32 コンソール
アプリケーション用プロジェクトの新規作
成 (1/2)
15
① 「ファイル」→
「新規作成」
→「プロジェクト」
② 「Visual C++」→
「Win32コンソールア
プリケーション」→
「OK」
③ 「次へ」
※ 次ページに続く
Win32コンソールアプリケーションとは,起
動すると,Win32コンソール(例えば右図)
が開くアプリのこと
名前は変えなくてもよい
Visual Studio 2015 で Win 32 コンソール
アプリケーション用プロジェクトの新規作
成 (2/2)
16
④ 「完了」をク
リック
⑤ プロジェクトが新規作
成されるので確認
Visual Studio 2015 の Win 32 コンソールアプ
リケーション用プロジェクト
17
ソースファイルを
クリックすると
エディタが
自動で開く
編集中のファイル名が表示
※ Win32 コンソールアプリケーション用プロジェクトを新
規作成したとき、エディタが自動で開くので、そのまま
使ってよい
• Visual Studio 2015 のエディタを使って、ソース
ファイルを編集しなさい
18
← 4行追加
• ビルドしなさい.ビルドのあと「1 正常終了、
0 失敗」の表示を確認しなさい
→ 表示されなければ、プログラムのミスを自分で
確認し、修正して、ビルドをやり直す
19
• Visual Studio 2015 で「x = 3;」の行に、ブレーク
ポイントを設定しなさい
20
① 「x = 3;」の行を
マウスでクリック
② 「デバッグ」→
「ブレークポイントの
設定/解除」
③ ブレークポイントが設定
されるので確認
赤丸がブレークポイントの印
• Visual Studio 2015 で、デバッガーを起動しなさい.
• 「x = 3;」の行で、実行が中断することを確認しな
さい
あとで使うので、中断したままにしておくこと
21
「デバッグ」
→ 「デバッグの開始」
「x = 3;」の行で実行が
中断している
• 「x = 3;」の行で、実行が中断した状態で、変数の
値を表示させなさい.手順は次の通り.
22
「x = 3;」は未実行で あ
ることを確認!
①「デバッグ」
→ 「ウインドウ」
→ 「ローカル」
② 変数名と値の対応表が
表示される
変数 x, y, z の値はすべて0
• 1回だけステップオーバーの操作を行い、変数 x
の値が 3 に変化することを確認しなさい.
23
「x = 3;」が実行された
「デバッグ」
→ 「ステップオーバー」
(あるいは F10 キー)
変数 x の値が 3 に変化!
• もう1回だけステップオーバーの操作を行い、変
数 y の値が 4 に変化することを確認しなさい.
24
「y = 4;」が実行された
変数 y の値が 4 に変化!
「デバッグ」
→ 「ステップオーバー」
(あるいは F10 キー)
• もう1回だけステップオーバーの操作を行い、変
数 z の値が 7 に変化することを確認しなさい.
25
「z = x + y;」が実行された
変数 z の値が 7 に変化!
「デバッグ」
→ 「ステップオーバー」
(あるいは F10 キー)
• 最後に、プログラム実行の続行の操作を行いなさ
い。これで、デバッガーが終了する。
26
「デバッグ」
→ 「続行」
2-3 変数の変化,プログラム
実行の流れ
27
繰り返しの例
28
x
y
3
5
2
1
2
2
36
60
24
12
24
24
Visual C++ のプログラム
i の値は 0 → 1 → 2 → 3 → 4 → 5
と変化し,全部済んだら終わる
繰り返す処理
パソコン演習
• Visual Studio 2015 を起動しなさい
• Visual Studio 2015 で、Win32 コンソールアプリ
ケーション用プロジェクトを新規作成しなさい
29
プロジェクトの「名前」は何でもよい
• Visual Studio 2015 のエディタを使って、ソース
ファイルを編集しなさい
30
6行追加
• ビルドしなさい.ビルドのあと「1 正常終了、
0 失敗」の表示を確認しなさい
→ 表示されなければ、プログラムのミスを自分で
確認し、修正して、ビルドをやり直す
31
• Visual Studio 2015 で「for (i = 0; …」の行に、ブ
レークポイントを設定しなさい
32
① 「 for (i = 0;」の
行をマウスでクリッ
ク
② 「デバッグ」→
「ブレークポイントの
設定/解除」
③ ブレークポイントが
設定されるので確認.
赤丸がブレークポイン
トの印
• Visual Studio 2015 で、デバッガーを起動しなさい.
• 「for (i = 0; …」の行で、実行が中断することを確
認しなさい
あとで使うので、中断したままにしておくこと
33
「デバッグ」
→ 「デバッグ開始」
「for (i = 0; …」の行で実行が
中断している
• 「for (i = 0; …」の行で、実行が中断した状態で、
変数の値を表示させなさい.手順は次の通り.
34
※ 次ページに拡大図
①「デバッグ」
→ 「ウインドウ」
→ 「ローカル」
② 変数名と値の対応表が
表示される
35
「y[i] = x[i] * 12;」は
未実行であることを確認!
変数 i の値は、変な値に
なっているはず
• ステップオーバーの操作を1回ずつ行いながら、
実行の流れを確認しなさい.
36
「デバッグ」
→ 「ステップオーバー」
(あるいは F10 キー)
• 最後に、プログラム実行の再開の操作を行いなさ
い。これで、デバッガーが終了する。
37
「デバッグ」
→ 「続行」
パソコン演習
• Visual Studio 2015 を起動しなさい
• Visual Studio 2015 で、Win32 コンソールアプリ
ケーション用プロジェクトを新規作成しなさい
38
プロジェクトの「名前」は何でもよい
• Visual Studio 2015 のエディタを使って、ソース
ファイルを編集しなさい
39
← 追加
• ビルドしなさい.ビルドのあと「1 正常終了、
0 失敗」の表示を確認しなさい
→ 表示されなければ、プログラムのミスを自分で
確認し、修正して、ビルドをやり直す
40
• Visual Studio 2015 で「s = 0;」の行に、ブレーク
ポイントを設定しなさい
41
① 「s = 0;」の行を
マウスでクリック
② 「デバッグ」→
「ブレークポイント
の設定/解除」
③ ブレークポイントが
設定されるので確認.
赤丸がブレークポイン
トの印
• Visual Studio 2015 で、デバッガーを起動しなさい.
• 「s = 0;」の行で、実行が中断することを確認しな
さい
あとで使うので、中断したままにしておくこと
42
「デバッグ」
→ 「デバッグの開始」
「s = 0;」の行で実行が
中断している
黄色の
矢印
• 「s = 0;」の行で、実行が中断した状態で、変数の
値を表示させなさい.手順は次の通り.
43
変数の値がおかしい
→ これは正しい動作。
今の時点では,
「s = 0;」は未実行である
ことを確認!
①「デバッグ」
→ 「ウインドウ」
→ 「ローカル」
② 変数名と値の対応表が
表示される
• ステップオーバーの操作を1回ずつ行いながら、
実行の流れと、変数 s, i の値の変化を確認しなさ
い.
44
「デバッグ」
→ 「ステップオーバー」
(あるいは F10 キー)
45
さらに続ける
• 最後に、プログラム実行の再開の操作を行いなさ
い。これで、デバッガーが終了する。
46
「デバッグ」
→ 「続行」