主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

実行時のエラーのデバッグ

MATLAB®関数内に実行時のエラーがあると,MATLABコマンドウィンドウに実行時スタックが表示されます。エラーメッセージとスタック情報を使用してエラー原因の詳細を入手してから,問題を修正するかエラー処理コードを追加します。詳細は,実行時スタックでのエラーの表示実行時のエラーの処理を参照してください。

実行時スタックでのエラーの表示

実行時スタックについて

実行時スタックは,MATLABによる墨西哥人コードの生成に対して,既定で有効になっています。エラー原因についての詳細を知るために,エラーメッセージと以下のスタック情報を使用します。

  • エラーを生成した関数の名前

  • 実行しようとした処理の行番号

  • その関数の実行に至るまでに呼び出された一連の関数,および各関数の呼び出しが行われた行

実行時スタックトレースの例-この例では,墨西哥人関数mlstack_mexに対する実行時スタックトレースを示します。

mlstack_mex (1)
索引超出矩阵维度。索引值-1超出了数组x的有效范围[1-4]。Error in mlstack>subfcn1 (line 5) switch (mayfail(u))

スタックトレースは次の情報を提供します。

  • エラータイプ

    ???索引超出矩阵维度。索引值-1超出数组x的有效范围[1-4]。

  • エラーの発生場所

    错误在==>mlstack>可能失败在31 y = x(u);

  • エラーが起きるまでの一連の関数呼び出し

    Error in ==> mlstack>subfcn1 at 5 switch (mayfail(u)) Error in ==> mlstack at 2 y = subfcn1(u);

実行時スタックを使用するケース

デバッグ中の実行時スタックは実行時のエラーの原因を突き止めるのに役立ちます。ただし,スタックが有効になっていると,生成されたコードに実行時スタックを保持するための命令が含まれ,実行時間が低下することがあります。実行時間を向上させるには,実行時スタックを無効にしてください。

実行時スタックの無効化-実行時チェックを無効にする方法で説明されているように,メモリの整合性チェックを無効にすることで実行時スタックを無効にできます。

注意

メモリの整合性チェックを無効にする前に,配列の範囲や次元のチェックが一切必要ないことを確認します。

実行時のエラーの処理

コードジェネレーターはエラーIDを伝播します。MATLABコードがエラーまたは警告をスローする場合は、テスト ベンチ コードでtry - catchステートメントを使用してエラー情報を調べて回復を試みるか,クリーンアップして停止します。たとえば,実行時スタックトレースの例にある関数の場合,以下を含むテストスクリプトを作成します。

尝试mlstack_mex(u) catch %在这里添加错误处理代码结束
詳細は,try / catchステートメントを参照してください。