Development Environment    

問題の修正とデバッグの終了

問題を修正し、デバッグを終了するには、つぎの操作を行います。

上記の操作のほとんどが、例題の終了で実際に使用されています。

変数の変更と結果のチェック   デバッグ中に、新しい値が予想通りの結果を生成するかどうか確認するために、カレントのワークスペースの中で、変数の値を変更することも可能です。プログラムが停止している間、コマンドウィンドウ、または、配列エディタ上で変数に新しい値を割り当ててください。その後、プログラムの実行、または、ライン単位での実行を続ければ、予想通りの結果が生成されるかどうか確認できます。また、変更後の値が予想通りの結果を生成しない場合、プログラムの中にそれ以外の問題、または、さらなる新しい問題が隠されていると考えてください。

デバッグの終了   問題を特定したら、デバッグセッションを終了してください。問題を修正するために、M-ファイルを変更したい場合、MATLABで他の関数を実行したい場合、必ずデバッグセッションを終了しなくてはなりません。

デバッグを終了するには、exit debug modeアイコンをクリックするか、DebugメニューからExit Debug Modeを選択してください。

また、デバッグを終了する関数は、dbquitです。

デバッグを終了すると、エディタ/デバッガのポーズインジケータが表示されなくなります。そして、コマンドウィンドウ上のプロンプトも、デバッグプロンプト K>> ではなく、通常のプロンプト >> に戻ります。また、この状態からコールスタックにアクセスすることはできません。

ブレークポイントの削除   ブレークポイントは、ユーザが消去するか自動的に消去されるまで、ファイルの中に保持されます。ブレークポイントは、つぎの操作によって自動的に消去されます。

問題を特定し、修正した後のように、プログラムを中断せずに実行したい場合、ブレークポイントを消去します。エディタ/デバッガ上でブレークポイントを消去するには、ラインに表示されるブレークポイントアイコンをクリックするか、Breakpoints、または、コンテキストメニューから Set/Clear Breakpoint を選択します。これにより、当該ラインのブレークポイントは消去されます。

ファイルに含まれる全てのブレークポイントを消去するには、Breakpointsメニューから、Clear All Breakpoints を選択するか、ツールバーのボタンをクリックしてください。

また、ブレークポイントを消去する関数は、dbclearです。たとえば、ファイルcollatzplotに含まれる全てのブレークポイントを消去するには、つぎのようにタイプします。

M-ファイルの修正   M-ファイルに隠されている問題を修正するには、デバッグを終了し、M-ファイルに変更を加え、セーブします。その後、予想通りの結果が出るかどうか確認するために、M-ファイルを実行します。

関数 dbstop によって設定されたブレークポイントのセットを含む M-ファイルを修正し、ライン番号が変更されてしまった場合には、以前設定したブレークポイントは適切なものではなくなってしまいます。このような場合、M-ファイルに変更を加える前に、関数 dbclear clear all in M-file を用いて、ブレークポイントを消去してください。

MATLABがデバッグモードにある間は、M-ファイルを変更しないでください。デバッグモード中にM-ファイルを変更すると、ファイルに含まれている全てのブレークポイントが消去され、予期せぬ結果になります。

例題の終了   例題に隠された問題を修正するには、つぎの操作を行ってください。

  1. デバッグセッションを終了します。デバッグを終了する1つの方法は、DebugメニューからExit Debug Modeを選択する方法です。
  2. ファイル collatzplot.m に含まれるブレークポイントを消去します。消去する方法の1つとして、コマンドウィンドウ上で、つぎのように入力する方法があります。

    dbclear all in collatzplot

  1. ファイル collatzplot.m のライン11を構成する文字列 plot_seqseq_length(m) に変更し、ファイルをセーブします。
  2. n = 3についてファイル collatzplot を実行するために、コマンドウィンドウで、つぎのように入力する方法があります。

    collatzplot(3)

  1. 出力結果を検証する。下のフィギュアは、Collatz数列の長さが n = 1に対しては1n = 2に対しては2n = 3 に対しては8と予想したとおりの結果になっていることを示しています。

  2. n3よりも、やや大きい値(たとえば、6)で、もう一度関数のテストを行い、正しい出力結果が出ていることを確認します。n = 6 に対する collatzplot の結果を、collatz の結果と共に検証する作業を、より簡単なものにするために、collatz.m の最終ラインに、つぎの1行を加えください。

    sequence

    これにより、コマンドウィンドウに数列が表示されます。

    その後、つぎのようにタイプして、n = 6 について、collatzplotを実行します。

    collatzplot(6)

  1. デバッグを簡単にするために、小さい n の値で、collatzplotを実行してきました。ここでは、このファイルが正しい計算結果を出力することがわかっているので、より大きな値で、collatzplot を実行し、より興味深い結果を出力してみましょう。この操作を行う前に、ステップ7で追加したライン( collatz.m のライン19)に対する出力結果を省略します。その場合、つぎのように、ラインの最後にセミコロンを追加してください。

    sequence;

    その後、ファイルを実行します。

    collatzplot(500)

    つぎの図は、n = 1 から = 500における Collatz 数列の長さを示しています。 n = 500.


 変数の値のチェック エディタ/デバッガの設定