ステップ実行 | Programming Place Plus Visual Studio編

トップページVisual Studio編

この章の概要

この章の概要です。


ステップ実行

デバッグに有用な機能の1つに、ステップ実行があります。この機能は、プログラムの実行を1行ずつ手動で進められるというものです。

if文などで分岐している箇所が、実際にどちらに進んでいるのか確認したり、あるタイミングで変数の値がどうなっているか確認したりといったデバッグに役立ちます。

次のサンプルプログラムを使って試してみます。

#include <stdio.h>

void f1(void);
void f2(void);
void f3(void);

void f1(void)
{
    int x = 0;

    f2();
    x = 10;
    f3();
}

void f2(void)
{
    puts("Hello,");
}

void f3(void)
{
    puts("World");
}

int main(void)
{
    f1();

    return 0;
}

ステップ実行を行うには、プログラムの実行を開始させた後、その実行をいったん停止させる必要があります。プログラムの実行をいったん停止させるには、ブレークポイントを使います。ブレークポイントについては、「ブレークポイント」のページを参照してください。

たとえば、プログラムの開始直後、f1(); となっている行にブレークポイントを設置します。そして、デバッグ実行を開始します。

ブレークポイントもステップ実行も、デバッグ実行でなければ機能しません。デバッグ実行については、「実行する」のページを参照してください。

すると、ブレークポイントのところで実行が停止した状態になります。この状態になったら、ステップ実行を開始できます。ですから、デバッグ作業を開始したい位置の少し手前にブレークポイントを設置するのがいいです。

ステップ実行には3つの種類があります。

  1. ステップイン
  2. ステップオーバー
  3. ステップアウト

ステップイン

ステップインは、1行分だけ実行を進めるコマンドです。このとき、その行が関数呼び出しになっている場合は関数内に入ります

ステップインは、F11キーを押すか、メニューバーの【デバッグ】>【ステップイン】で行います。

サンプルプログラムの f1(); のところにブレークポイントを設置したとします。そこからステップインを繰り返すと、次のように進みます。

puts関数の内部には入っていきませんが、これは関数の定義が見えない(ソースコードが公開されていない)からです。他者から提供されたライブラリを使う場合などで、こういうことがあります。

もっともていねいに実行の過程を確認できるコマンドです。

ステップオーバー

ステップオーバーも1行分だけ実行を進めますが、ステップインと違って、その行が関数呼び出しになっている場合、関数内の実行を一気に終わらせます

ステップオーバーは、F10キーを押すか、メニューバーの【デバッグ】>【ステップオーバー】で行います。

サンプルプログラムの f1関数内 int x = 0; のところにブレークポイントを設置したとします。そこからステップオーバーを繰り返すと、次のように進みます。

関数の詳細にまで立ち入らなくてよい場合に使用します。

ステップアウト

ステップアウトは、現在実行中の関数を一気に終わらせて、呼び出し元に帰ります。

ステップアウトは、Shift+F11キーを押すか、メニューバーの【デバッグ】>【ステップアウト】で行います。

サンプルプログラムの f2関数内 puts("Hello,"); のところにブレークポイントを設置したとします。そこからステップアウトを繰り返すと、次のように進みます。

現在の関数内の残りの処理に興味がない場合に使います。


参考リンク



更新履歴

’2020/5/12 新規作成。



Visual Studio編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る