先頭へ戻る

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

Programming Place Plus トップページ -- 資料集 -- 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 でシェア
Twitter でツイート Twitter をフォロー LINE で送る
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー