このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
TLC デバッガーの使用
TLC デバッガーは、TLC コードのプログラミング エラーを特定するのに役立ちます。TLC デバッガーを使用して、TLC コードを 1 行ずつ実行したり、指定したブロックのスコープ内の変数を解析/変更したり、TLC 呼び出しスタックを表示したりできます。TLC デバッガーは、dbx
や gdb
などの標準のデバッグ ツールに似たコマンドを提供するコマンド ライン インターフェイスを備えています。
TLC コードのデバッグのヒント
次に、TLC コードのデバッグに役立つヒントをいくつか示します。
完全な TLC 呼び出しスタックを表示するには、次のステートメントを TLC コード内のエラー メッセージが指す行の前に配置します。これは、問題を絞り込むのに役立ちます。
%setcommandswitch "-v1"
関数内の変数の値をトレースするには、次のステートメントを TLC ファイル内に配置します。
%trace This is in my function %<variable>
メッセージは、
-v
コマンド スイッチを指定して Target Language Compiler を実行した場合は表示されますが、それ以外の場合は表示されません。%trace
の代わりに%warning
を使用して変数を出力できますが、それらの行はデバッグの終了後に削除またはコメントアウトする必要があります。コードの到達していない部分を特定するには、TLC カバレッジ ログ ファイルを使用します。
デバッガーの呼び出し
TLC ファイル内のバグや潜在的な問題を特定するには、TLC デバッガーを使用します。TLC デバッガーを使用するには、次のようにします。
[コンフィギュレーション パラメーター] ダイアログ ボックスで.rtw ファイルを残すを選択します。これにより、コード生成後に
ファイルが削除されなくなります。model
.rtwコード生成時に TLC デバッガーを実行を選択して、コード生成プロセスの開始時に TLC デバッガーを呼び出します。
[コード生成時に TLC デバッガーを実行] を選択することは、[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成] ペインで TLC オプション
-dc
を指定することと等価です。変更を適用し、Ctrl+B を押してコード生成を開始します。この処理は実行する TLC コードの最初の行で停止して TLC コマンド ライン デバッガーにブレークインし、次のプロンプトを表示します。
TLC_DEBUG>
ここで、ブレークポイントを設定したり、コード ジェネレーター ファイルの内容を調べたり、print
、which
、または whos
を使用して TLC ファイル内の変数を調べたりできます。
別の方法として、TLC デバッガーを MATLAB® プロンプトから呼び出すこともできます。(これは、
ファイルをプロジェクト フォルダーに残していることが前提になります。)間違いを避けるために、ビルド プロセスの model
.rtwtlc
コマンドの出力を MATLAB コマンド ウィンドウにコピーし、そのコマンド ラインに -dc
を付けてから発行します。
TLC デバッガーのコマンド ライン スイッチの完全な一覧については、Target Language Compiler のスイッチの表で確認できます。
TLC デバッガー コマンドの一覧
TLC デバッガー コマンドの表に、TLC デバッガー コマンドの一覧を示します。
個々のコマンドについての詳しいヘルプを取得するには、次の構文を使用します。
help command
TLC デバッガー内から次のように実行します。
TLC-DEBUG> help clear
TLC デバッガー コマンドは、最も短い一意の形式に短縮できます。次に例を示します。
TLC-DEBUG> break warning
次のように短縮できます。
TLC-DEBUG> br warning
TLC デバッガー コマンドの完全な一覧を表示するには、TLC-DEBUG>
プロンプトで「help
」と入力します。
TLC デバッガー コマンド
コマンド | 説明 |
---|---|
assign variable=value | 実行中のプログラムの変数を変更します。 |
break ["filename":]line|error|warning| | ブレークポイントを設定します。%breakpoint 命令も参照してください。 |
clear [breakpoint#|all] | ブレークポイントを削除します。 |
condition [breakpoint#] [expression] | ブレークポイントに条件を付けます。 |
continue ["filename":]line|function | ブレークポイントから続行します。 |
disable [breakpoint#] | ブレークポイントを無効にします。 |
down [n] | スタック内で下に移動します。 |
enable [breakpoint#] | ブレークポイントを有効にします。 |
finish | 現在の関数の完了後にブレークします。 |
help [command] | コマンドのヘルプを取得します。 |
ignore [breakpoint#]count | ブレークポイントを無視する数を設定します。 |
iostack | I/O スタックの内容を表示します。 |
list start[,end] | 始点から終点までのファイルの行をリストします。 |
loadstate "filename" | デバッガーのブレークポイントの状態をファイルから読み込みます。 |
next | 関数には入らずに 1 ステップ進めます。 |
print expression | TLC の式の値を出力します。レコードを出力するには、 |
quit | TLC デバッガーを終了します。プロンプトで Ctrl+C を押してもデバッガーを終了できます。 |
run "filename" | コマンド ライン デバッガーのコマンドのバッチ ファイルを実行します。 |
savestate "filename" | デバッガーのブレークポイントの状態をファイルに保存します。 |
status | アクティブなブレークポイントのリストを表示します。 |
step | ステップインします。 |
stop ["filename":]line|error|warning|trace| | ブレークポイントを設定します ( |
tbreak ["filename":]line|function | 一時的なブレークポイントを設定します。 |
thread [n] | アクティブなスレッドをスレッド |
threads | TLC の現在アクティブな実行スレッドをリストします。 |
tstop ["filename":]line|function | 一時的なブレークポイントを設定します。 |
up [n] | スタック内で上に移動します。 |
where | 現在アクティブな実行チェーンを表示します。 |
which name | 名前を参照し、そのスコープを表示します。 |
whos [::|expression] | 指定したスコープ内の変数をリストします。 |
%breakpoint 命令
break
コマンドの代わりに、次の命令を追加して、TLC ファイル内の位置にブレークポイントを組み込むことができます。
%breakpoint
使用に関するメモ
break
または stop
を使用するときは、以下を使用します。
エラーでブレークまたは停止する場合は
error
警告でブレークまたは停止する場合は
warn
トレースでブレークまたは停止する場合は
trace
たとえば、エラーでブレークする必要がある場合は以下を使用します。
TLC_DEBUG> break error
clear
を使用するときは、status
を使用してブレークポイントのステータスを取得し、特定のブレークポイントをクリアします。次に例を示します。
TLC-DEBUG> break "foo.tlc":46 TLC-DEBUG> break "foo.tlc":25 TLC-DEBUG> status Breakpoints: [1] break File: foo.tlc Line: 46 [2] break File: foo.tlc Line: 25 TLC-DEBUG> clear 2
この例では、clear 2
で 2 つ目のブレークポイントをクリアしています。