この章の概要です。
デバッグ📘に有用な機能の1つに、ステップ実行📘があります。この機能は、プログラムの実行を1行ずつ手動で進めます。
if文などで分岐している箇所が、実際にどちらに進んでいるのか確認したり、あるタイミングで変数の値がどうなっているか確認したりといったデバッグに役立ちます。
次のサンプルプログラムを使って試してみます。
#include <stdio.h>
void f1(void);
void f2(void);
void f3(void);
void f1(void)
{
int x = 0;
();
f2= 10;
x ();
f3}
void f2(void)
{
("Hello,");
puts}
void f3(void)
{
("World");
puts}
int main(void)
{
();
f1
return 0;
}
ステップ実行をおこなうには、プログラムの実行を開始させた後、その実行をいったん停止させる必要があります。プログラムの実行をいったん停止させるには、ブレークポイント📘を使います。ブレークポイントについては、「ブレークポイント」のページを参照してください。
たとえば、プログラムの開始直後、f1();
となっている行にブレークポイントを設置します。そして、デバッグ実行を開始します。
ブレークポイントもステップ実行も、デバッグ実行でなければ機能しません。デバッグ実行については、「実行する」のページを参照してください。
すると、ブレークポイントのところで実行が停止した状態になります。この状態になったら、ステップ実行を開始できます。ですから、デバッグ作業を開始したい位置の少し手前にブレークポイントを設置するのがいいです。
ステップ実行には3つの種類があります。
ステップインは、1行分だけ実行を進めるコマンド📘です。このとき、その行が関数呼び出しになっている場合は関数内に入ります。
ステップインは、F11キーを押すか、メニューバーの【デバッグ】>【ステップイン】で行います。
サンプルプログラムの f1();
のところにブレークポイントを設置したとします。そこからステップインを繰り返すと、次のように進みます。
puts関数の内部には入っていきませんが、これは関数の定義が見えない(ソースコードが公開されていない)からです。他者から提供されたライブラリを使う場合などで、こういうことがあります。
もっともていねいに実行の過程を確認できるコマンドです。
ステップオーバーも1行分だけ実行を進めますが、ステップインと違って、その行が関数呼び出しになっている場合、関数内の実行を一気に終わらせます。
ステップオーバーは、F10キーを押すか、メニューバーの【デバッグ】>【ステップオーバー】で行います。
サンプルプログラムの f1関数内 int x = 0;
のところにブレークポイントを設置したとします。そこからステップオーバーを繰り返すと、次のように進みます。
関数の詳細にまで立ち入らなくてよい場合に使用します。
ステップアウトは、現在実行中の関数を一気に終わらせて、呼び出し元に帰ります。
ステップアウトは、Shift+F11キーを押すか、メニューバーの【デバッグ】>【ステップアウト】で行います。
サンプルプログラムの f2関数内 puts("Hello,");
のところにブレークポイントを設置したとします。そこからステップアウトを繰り返すと、次のように進みます。
現在の関数内の残りの処理に興味がない場合に使います。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
![]() |
管理者情報 | プライバシーポリシー |