最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
MATLAB® プログラムをグラフィカルにデバッグするには、エディター/デバッガーを使用します。代わりに、コマンド ウィンドウでデバッグ関数を使用することもできます。2 つの方法は互換です。
デバッグを開始する前に、プログラムが保存済みであり、プログラムとそれが呼び出すファイルがすべて検索パス上または現在のフォルダーに存在することを確認してください。
変更を保存していないファイルをエディターから実行すると、ファイルは自動的に保存された後で実行されます。
変更を保存していないファイルをコマンド ウィンドウから実行すると、MATLAB ソフトウェアはそのファイルの保存されたバージョンを実行します。そのため、変更の結果は反映されません。
問題と考えられる箇所の値や変数を調べられるようにするために、MATLAB ファイルの実行を一時停止するブレークポイントを設定します。ブレークポイントはエディター上で設定したり、コマンド ウィンドウで関数を使って設定したり、またはその両方の方法で設定することができます。
ブレークポイントには、標準、条件付き、エラーの 3 種類があります。エディターで "標準" ブレークポイントを追加するには、ブレークポイントを設定する実行可能な行のブレークポイント アレーをクリックします。ブレークポイント アレーとは、エディターの左側にある幅の狭い列で、行番号の右に表示されます。F12 キーを使用してブレークポイントを設定することもできます。
実行可能な行は、ブレークポイント アレー内に — (ダッシュ) で示されます。たとえば、次のコード内の 2 行目の横にあるブレークポイント アレーをクリックすると、その行にブレークポイントを追加できます。
実行可能ステートメントが複数行にわたる場合、追加行のブレークポイント アレーに — (ダッシュ) が表示されていなくても、そのステートメントの各行にブレークポイントを設定できます。次のコード例では、4 行すべてにブレークポイントを設定できます。
ブレークポイントの種類についての詳細は、ブレークポイントを設定するを参照してください。
ブレークポイントを設定後、コマンド ウィンドウまたはエディターからファイルを実行します。ファイルを実行すると、以下の結果が得られます。
[実行] ボタンが [一時停止]
ボタンに変わります。
コマンド ウィンドウのプロンプトが K>>
に変わり、MATLAB がデバッグ モードであり、キーボードで制御できることを示します。
MATLAB はプログラムの最初のブレークポイントで一時停止します。エディター内では、ブレークポイントの右側の緑色の矢印が一時停止を示します。プログラムは、実行が再開されるまで、一時停止した行を実行しません。たとえば、次のコードではプログラムが x = ones(1,10);
を実行する前にデバッガーは一時停止します。
MATLAB は、[エディター] タブの [デバッグ] セクションにある [関数呼び出しスタック] に現在のワークスペースを表示します。
コマンド ウィンドウからデバッグ関数を使用する場合、関数呼び出しスタックを表示するには関数 dbstack
を使用します。
[関数呼び出しスタック] の使用についての詳細は、ワークスペースの選択を参照してください。
プログラムの実行中に実行を一時停止するには、[エディター] タブで、[一時停止] ボタンをクリックします。MATLAB は、次の実行可能行で実行を一時停止し、[一時停止]
ボタンは [続行]
ボタンに変わります。実行を続行するには、[続行]
ボタンを押します。
一時停止は、実行時間の長いプログラムが予期したとおりに実行されていることを確認するために、その進行状況をチェックする場合に役立ちます。
一時停止ボタンをクリックすると、自身のプログラムの外部から、MATLAB をファイル内で一時停止させることができます。[続行] ボタンをクリックすると、通常の実行が再開され、ファイルの結果は変わりません。
コードが一時停止している間、変数値を表示または変更したり、コードを変更したりすることができます。
デバッグ中に変数値を表示して、コードの行で予想どおりの結果が生成されているかどうかを確認します。これを行うには、変数の左側にマウス ポインターを置きます。変数の現在の値がデータ ヒントに表示されます。
データ ヒントはポインターを移動するまで表示されます。データ ヒントが表示されない場合は、変数が含まれる行をクリックしてからポインターを変数のそばに近づけます。詳細は、デバッグ中の値の検査を参照してください。
新しい値で予想どおりの結果が生成されるかどうかを確認するために、デバッグ中に変数値を変更できます。プログラムが一時停止しているときに、コマンド ウィンドウ、ワークスペース ブラウザーまたは変数エディターで変数に新しい値を代入します。その後、プログラムの実行またはステップ実行を続けます。
たとえば次の場合、n = 2
のときに MATLAB は for
ループ内で一時停止します。
コマンド ラインで「n = 7;
」と入力して、n
の現在の値を 2 から 7 に変更します。
[続行] をクリックしてコードの次の行を実行します。
MATLAB は n
= 7
でコード行 x(n) = 2 * x(n-1);
を実行します。
考えられる解決法をテストするためにデバッグ中にコード セクションを変更し、変更を保存せずにテストを実行できます。通常は、デバッグ終了後に MATLAB ファイルを変更し、変更を保存してからファイルを実行することをお勧めします。そうしない場合、予期しない結果となることがあります。しかし、デバッグ中に試しておきたいような状況もあります。
デバッグ中にプログラムを変更する方法は次のとおりです。
コードが一時停止している間に、ファイルのまだ実行されていない部分を変更します。
ブレークポイントはグレーになり、無効であることが示されます。
MATLAB で一時停止している行より後のすべてのコードを選択し、右クリックして、コンテキスト メニューから [選択の実行] を選択します。
コードの評価が完了したら、デバッグを停止して、行った変更を保存するか元に戻してからデバッグ プロセスを続行します。
デバッグ時には、MATLAB ファイルをステップ実行でき、値を調べたい点で停止することができます。
次の表に、使用できるデバッグ操作と、それらを実行するために使用できるさまざまな方法を示します。
説明 | ツール バー ボタン | 代替関数 |
---|---|---|
カーソルが位置する行まで、ファイルの実行を続けます。コンテキスト メニューからも選択できます。 |
| なし |
ファイルの現在の行を実行します。 |
| |
ファイルの現在の行を実行し、実行した行で他の関数が呼び出されると、その関数に入りステップ実行します。 |
|
|
ファイルの最後または他のブレークポイントのいずれかになるまで、ファイルの実行を再開します。 |
| |
割り込み後、呼び出した関数またはローカル関数の残りの部分を実行し、その関数の実行から抜けて実行を停止します。 |
|
|
デバッグ モードを一時停止します。 |
| なし |
デバッグ モードを終了します。 |
| dbquit |
問題を特定した後は、[エディター] タブに移動し、[デバッグの終了] をクリックしてデバッグ セッションを終了します。ファイルを変更して保存したり、MATLAB で他のプログラムを実行したりしようとする場合は、デバッグ セッションを終了しなければなりません。
デバッグを終了すると、一時停止インジケーターはエディターから消え、K>>
の代わりに通常のプロンプト >>
がコマンド ウィンドウに表示されます。呼び出しスタックへはアクセスできなくなります。
MATLAB ソフトウェアがブレークポイントで一時停止しているときに応答しなくなる場合は、Ctrl + c キーを押すと MATLAB プロンプトに戻ります。