Main Content

コード生成レポート

MATLAB® Coder™ は、次を実行するのに役立つコード生成レポートを作成します。

  • コード生成の問題をデバッグし、MATLAB コードがコード生成に適しているか確認する。

  • 生成された C/C++ コードを表示する。

  • MATLAB ソース コードと生成された C/C++ コード間でトレースする。

  • コード ジェネレーターで MATLAB コード内の変数と式の型情報を判断し、伝播する方法を確認する。

  • 生成されたコードでの潜在的な問題を特定する。

  • Embedded Coder® で利用可能な追加レポートにアクセスする。

レポートの生成

レポート生成を有効にする場合またはエラーが発生する場合、コード ジェネレーターはコード生成レポートを作成します。コード生成レポートの作成とオープンを制御するには、アプリ設定、codegen オプションまたは構成オブジェクトのプロパティを使用します。

MATLAB Coder アプリの場合:

  • レポートを生成するには、[コード生成レポートを常に作成する]Yes に設定します。

  • アプリで自分のレポートを開くには、[レポート生成時の自動起動] チェック ボックスを Yes に設定します。

[レポートの表示] リンクをクリックして、コード生成レポートを表示します。ビルドのエラーが発生しなかった場合、このレポートには MATLAB コード、生成された C/C++ ファイルおよび MATLAB コード内の変数に関するコンパイル時の型情報へのリンクが提示されます。ビルド エラーが発生した場合、レポートにはエラーと警告が表示されます。

コマンド ラインにおいて、次の codegen オプションを使用します。

  • レポートを生成するには、-report オプションを使用します。

  • レポートを生成して開くには、-launchreport オプションを使用します。

あるいは、構成オブジェクトのプロパティを使用します。

  • レポートを生成するには、GenerateReporttrue に設定します。

  • codegen で自分のレポートを開く場合は、LaunchReporttrue に設定します。

レポートの場所

コード生成レポートには report.mldatx という名前が付けられます。このレポートは、コード生成出力フォルダーの html サブフォルダー内に配置されます。MATLAB R2018a 以降をご利用の場合は、report.mldatx ファイルをダブルクリックして開くことができます。

エラーと警告

[すべてのメッセージ] タブにコード生成エラー、警告および情報のメッセージが表示されます。エラーまたは警告に関するソース コードを強調表示するには、メッセージをクリックします。最初のメッセージに対処するのが最も効率よいアプローチです。その後のエラーや警告は最初のメッセージに関連して発生したものである可能性があるからです。

[ビルド ログ] タブにコンパイルおよびリンクのエラーと警告が表示されます。コード ジェネレーターは、MEX 出力に対して、または他の出力タイプでサポートされているコンパイラを使用している場合にのみコンパイルの警告を検出します。サポートされるコンパイラを参照してください。

ファイルと関数

レポートには、MATLAB のソース関数と生成ファイルのリストが表示されます。[MATLAB ソース] ペインの [関数リスト] ビューでは、含まれているファイルに従って関数が整理されます。呼び出し構造に従って関数を可視化するには、[呼び出しツリー] ビューを使用します。

レポートのコード ペインで関数を表示するには、リスト内の関数をクリックします。関数をクリックすると、その関数が含まれるファイルが開きます。MATLAB エディターで選択したファイルを編集するには、[MATLAB で編集] をクリックするか、コード ペインで行番号をクリックします。

Embedded Coder を利用して、トレーサビリティを有効にしたレポートを生成する場合、コード ペインでソース コードと生成コードを並べて表示するには、[コードのトレース] をクリックします。ソース コードと生成コード間を双方向にトレースすることができます。Interactively Trace Between MATLAB Code and Generated C/C++ Code (Embedded Coder)を参照してください。

スタンドアロン コード (ライブラリまたは実行可能ファイル) の生成ファイルを別の開発環境に移動させる場合、[コードのパッケージ化] をクリックすることでそれらを zip ファイルにすることができます。

特殊な関数またはクラス

関数が異なるデータ型の入力で呼び出される場合、またはクラスがそのプロパティに対して異なるデータ型を使用する場合、コード ジェネレーターは特殊化を生成します。[MATLAB ソース] ペインでは、番号付きの関数 (またはクラス) が特殊化を示します。次に例を示します。

固定小数点変換後の関数リスト

浮動小数点の MATLAB コードを固定小数点の MATLAB コードに変換してから、固定小数点の C/C++ コードを生成する場合、[MATLAB ソース] ペインには元の MATLAB 関数と固定小数点の MATLAB 関数のリストが表示されます。次に例を示します。

MATLAB ソース

コード ペインで MATLAB 関数を表示するには、[MATLAB ソース] ペインで関数の名前をクリックします。コード ペインで、変数または式の上で一時停止すると、ツールヒントに、そのサイズ、型および実数/複素数に関する情報が表示されます。さらに、構文の強調表示は、MATLAB 構文要素と、関数が外部関数であるかどうか、引数が定数であるかどうかといった特定のコード生成属性を識別するのにも役立ちます。

外部関数

レポートは紫色のテキストで外部関数を識別します。ツールヒントは関数が外部関数であることを示しています。

This image shows the report when it identifies the extrinsic function. The extrinsic function is purple.

定数引数

オレンジ色のテキストは、エントリポイント関数または特殊な関数へのコンパイル時の定数引数を示しています。ツールヒントにはその定数値が表示されます。

This image shows the report when it identifies a compile-time costant argument. The constant a is highlighted in orange.

定数引数の値を把握することで、生成された関数シグネチャを理解することができます。また、コード生成で異なる定数引数値をもつ関数の特殊化が作成された場合に確認することもできます。

ワークスペースの変数に値をエクスポートするには、[エクスポート] アイコン をクリックします。

MATLAB 変数

[変数] タブには、選択した MATLAB 関数の変数に関する情報が表示されます。関数を選択するには、[MATLAB ソース] ペインで関数をクリックします。

変数テーブルには以下の情報が表示されます。

  • クラス、サイズ、実数/複素数

  • 固定小数点型のプロパティ

  • 配列がスパースかどうか

  • 配列のレイアウト

この情報は、型の不一致エラーなどのエラーをデバッグしたり、コード ジェネレーターが型を伝播する方法や生成コード内でデータを表現する方法を把握するのに役立ちます。

[変数] タブの視覚的なインジケーター

次の表では、変数テーブルで使用される記号、バッジおよびその他のインジケーターについて説明します。

変数テーブルの列インジケーター説明
名前展開アイコン変数には、展開アイコンをクリックすることで表示できる要素やプロパティがあります。
名前{:}同種 cell 配列 (すべての要素のプロパティは同じになります)。
名前{n}異種混合 cell 配列の n 番目の要素。
クラスv > nv は異なるクラス、サイズ、実数/複素数で再利用されます。数値 n は、一意のプロパティ セットをもつ再利用を特定します。名前が変更された変数で一時停止すると、クラス、サイズおよび実数/複素数を共有するこの変数のインスタンスのみがレポートで強調表示されます。同じ変数を異なるプロパティで再利用するを参照してください。
サイズ:n上限が n の可変サイズの配列。
サイズ:?上限なしの可変サイズの配列。
サイズイタリック実行中に次元によってサイズが変更されない可変サイズの配列。
クラス接頭辞 sparseスパース配列。
クラス接頭辞 complex複素数。
クラス

固定小数点型。

固定小数点プロパティを表示するには、バッジをクリックします。

[変数] タブの配列レイアウト インジケーター

次の表では、変数テーブルでの配列レイアウトを示すバッジについて説明します。

バッジ説明

行優先の配列レイアウト。

列優先の配列レイアウト。

行優先のレイアウトと列優先のレイアウトの混在。

行優先および列優先の配列レイアウトを参照してください。

コードのトレース

次のメソッドのいずれかを使用して、MATLAB ソース コードと生成された C/C++ コード間をトレースできます。

  • MATLAB コードと生成コード間の双方向のマッピングを可視化します。双方向トレースにアクセスするには、レポートで [コードのトレース] をクリックします。

    [コードのトレース] ボタンは、Embedded Coder を利用していて、コード生成時にコードのトレーサビリティを有効にした場合にのみ有効化されます。Interactively Trace Between MATLAB Code and Generated C/C++ Code (Embedded Coder)を参照してください。

  • ソース コードをコメントとして生成された C/C++ コードに含めます。

    コメントで、コード ジェネレーターは対応する MATLAB ソース コードを見つけるのに役立つタグを生成します。Embedded Coder を利用している場合は、タグはソース コードへのリンクです。MATLAB ソース コードへの生成された C/C++ コードのトレースを参照してください。

コード洞察

コード ジェネレーターは、生成コードで発生する可能性のある問題を検出して報告することができます。[コードの洞察] タブにメッセージを表示します。次のような問題が含まれます。

  • 生成コードの動作と MATLAB コードの動作の潜在的な相違点。レポートに潜在的な相違点のメッセージが含まれるのは、潜在的な相違点の報告を有効にしている場合のみです。潜在的な相違点のレポートを参照してください。

  • 単精度演算および倍精度演算など、生成コードの潜在的なデータ型の問題。

    レポートに潜在的なデータ型の問題が含まれるのは、Embedded Coder を利用していて、潜在的なデータ型の問題の報告を有効にしている場合のみです。Fixed-Point Designer™ をご利用の場合は、手間のかかる固定小数点演算もレポートで特定されます。Highlight Potential Data Type Issues in a Report (Embedded Coder)を参照してください。

  • 潜在的な行優先の問題。行優先のレイアウトのコード設計を参照してください。

  • 自動並列化の問題。生成コードでの for ループの自動並列化を参照してください。

追加レポート

[概要] タブには次の追加レポートへのリンクを表示することができます。

レポートの制限事項

  • エントリポイントの概要は varargin および varargout の個別の要素を表示しますが、変数テーブルはそれらを表示しません。

  • ループの展開に関して完全な情報を表示するわけではありません。1 つの任意の反復のデータ型を表示します。

  • デッド コードに関する情報を表示しません。

関連するトピック