Main Content

TLC デバッガーの使用

TLC デバッガーは、TLC コードのプログラミング エラーを特定するのに役立ちます。TLC デバッガーを使用して、TLC コードを 1 行ずつ実行したり、指定したブロックのスコープ内の変数を解析/変更したり、TLC 呼び出しスタックを表示したりできます。TLC デバッガーは、dbxgdb などの標準のデバッグ ツールに似たコマンドを提供するコマンド ライン インターフェイスを備えています。

TLC コードのデバッグのヒント

次に、TLC コードのデバッグに役立つヒントをいくつか示します。

  1. 完全な TLC 呼び出しスタックを表示するには、次のステートメントを TLC コード内のエラー メッセージが指す行の前に配置します。これは、問題を絞り込むのに役立ちます。

    %setcommandswitch "-v1"
  2. 関数内の変数の値をトレースするには、次のステートメントを TLC ファイル内に配置します。

    %trace This is in my function %<variable>

    メッセージは、-v コマンド スイッチを指定して Target Language Compiler を実行した場合は表示されますが、それ以外の場合は表示されません。%trace の代わりに %warning を使用して変数を出力できますが、それらの行はデバッグの終了後に削除またはコメントアウトする必要があります。

  3. コードの到達していない部分を特定するには、TLC カバレッジ ログ ファイルを使用します。

デバッガーの呼び出し

TLC ファイル内のバグや潜在的な問題を特定するには、TLC デバッガーを使用します。TLC デバッガーを使用するには、次のようにします。

  1. [コンフィギュレーション パラメーター] ダイアログ ボックスで.rtw ファイルを残すを選択します。これにより、コード生成後に model.rtw ファイルが削除されなくなります。

  2. コード生成時に TLC デバッガーを実行を選択して、コード生成プロセスの開始時に TLC デバッガーを呼び出します。

    [コード生成時に TLC デバッガーを実行] を選択することは、[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成] ペインで TLC オプション -dc を指定することと等価です。

  3. 変更を適用し、Ctrl+B を押してコード生成を開始します。この処理は実行する TLC コードの最初の行で停止して TLC コマンド ライン デバッガーにブレークインし、次のプロンプトを表示します。

    TLC_DEBUG>

ここで、ブレークポイントを設定したり、コード ジェネレーター ファイルの内容を調べたり、printwhich、または whos を使用して TLC ファイル内の変数を調べたりできます。

別の方法として、TLC デバッガーを MATLAB® プロンプトから呼び出すこともできます。(これは、model.rtw ファイルをプロジェクト フォルダーに残していることが前提になります。)間違いを避けるために、ビルド プロセスの tlc コマンドの出力を 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|
trace|function

ブレークポイントを設定します。%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 の式の値を出力します。レコードを出力するには、CompiledModel.System[0].Block[0] のように完全修飾のスコープを指定する必要があります。

quit

TLC デバッガーを終了します。プロンプトで Ctrl+C を押してもデバッガーを終了できます。

run "filename"

コマンド ライン デバッガーのコマンドのバッチ ファイルを実行します。

savestate "filename"

デバッガーのブレークポイントの状態をファイルに保存します。

status

アクティブなブレークポイントのリストを表示します。

step

ステップインします。

stop ["filename":]line|error|warning|trace|
function

ブレークポイントを設定します (break と同じ)。

tbreak ["filename":]line|function

一時的なブレークポイントを設定します。

thread [n]

アクティブなスレッドをスレッド #n に変更します (0 がメイン プログラムのスレッド番号)。

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 つ目のブレークポイントをクリアしています。

関連するトピック