トレースの使用の概要
関連項目 :
トレースを使用する理由
トレースを使用することで、特定の状態(アプリケーションのクラッシュなど)になるまでのプログラムの流れを調べたり、トレースデータを使用して問題の原因を特定したりすることができます。トレースデータは、不規則な症状が散発的に発生するようなプログラミングエラーを特定する際に役立ちます。
トレーストリガとフィルタを使用する理由
トレーストリガとフィルタ条件を使用することで、ソースコードの関心を持つ部分を選択し、トレースプローブのトレースバッファをより効率的に使用できます。トレーストリガ(トレース開始トリガおよびトレース停止トリガブレークポイント)は、たとえばトレースデータを収集する対象のコードセクションを指定します。トレースフィルタは、実行中に満たされたときにトレースデータの収集を有効にする条件を指定します。
トレースの概要
C-SPY でトレースを使用するには、ターゲットシステムがトレースデータを生成できる必要があります。データが生成されると、C-SPY でそれを収集し、さまざまなウィンドウやダイアログボックスでそのデータを視覚化および分析することができます。
C-SPY は、以下のターゲットシステムからのトレースデータの収集をサポートしています。
ETM (Embedded Trace Macrocell) をサポートするデバイス — ETMトレース
SWO (Serial Wire Output) 通信チャンネルを使用してSWD (Serial Wire Debug) インターフェースをサポートするデバイス — SWOトレース
一部のコアおよびデバイスには、C-SPYシミュレータ
使用しているターゲットシステムに応じて、異なるタイプのトレースデータが生成できます。
ETMトレース
ETM (Embedded Trace Macrocell) のリアルタイムトレースは、選択された実行の一部について実行されたすべての命令を連続して収集したシーケンスです。トレースバッファが保持できるだけのデータしか収集できません。トレースバッファは、デバッグプローブまたはオンチップ(ETB または ETR)のいずれかにあります。トレースバッファは、トレースデータをリアルタイムで収集しますが、データは実行が停止するまで C-SPY のウィンドウには表示されません。
PTMトレース
PTM (Program Trace Macrocell) は、一部の Arm Cortex コアで使用されるトレースロジックの代替実装です。機能は ETM トレースと同じです。
本書全体を通して、ETM という用語は別途記載のない限り PTM にも該当します。
ETBトレース
ETB (Embedded Trace Buffer) トレースは、オンチップのトレースバッファです。ETB トレースには、定義済のサイズを持つ指定のメモリエリアがあります。
ETRトレース
ETR トレース (Embedded Trace Buffer) はトレースの派生型で、オンチップのトレースバッファを使用します。ETR トレースの場合、トレースバッファはアプリケーションコードと RAM メモリを共有します。
MTBトレース
MTB トレース (Micro Trace Buffer) はトレースの派生型で、オンチップのトレースバッファを使用します。MTB トレースの場合、トレースバッファはアプリケーションコードと RAM メモリを共有します。
MTB トレースは、Cortex-M0+ および M23 コアに基づいた一部のデバイスの命令トレースへのアクセス権を付与します。
SWOトレース
SWOトレースは、オンチップのデバッグハードウェアによって生成されるさまざまな種類のイベントのシーケンスです。イベントは SWO 通信チャンネルを介して、ターゲットシステムからリアルタイムで送信されます。つまり、C-SPY のウィンドウはターゲットシステムの実行中に連続して更新されます。最も重要なイベントは以下のとおりです。
PCサンプリング
ハードウェアは、プログラムカウンタの値を一定の間隔でサンプリングおよび送信することができます。これは(ETMトレースのような)実行済み命令の連続シーケンスではなく、
PCの散発的かつ定期的なサンプリングです。現在のCPUは通常、毎秒数百万の命令を実行しますが、PCサンプリングレートは一般的に毎秒数千の単位でカウントされます。割り込みログ
ハードウェアは割り込みの実行に関連するデータを生成して送信できます。割り込みハンドラルーチンの投入および終了時にイベントが生成されます。
データログ
データログブレークポイントを使用して、ある変数または単にアドレス範囲がCPUによってアクセスされたときにイベントを生成して送信するようハードウェアを設定できます。
SWOチャンネルの処理量には制限があります。よって、PCサンプリング、割り込み、指定した変数へのアクセスの頻度のいずれかが高い場合、通常は上記のすべての機能を同時に使用することはできません。
トレースプローブでSWO通信チャンネルを使用する場合、データはトレースバッファで収集され、実行が停止した後に表示されます。
C-SPYのトレース機能
C-SPY では、トレース関連のウィンドウとして[トレース]、[関数トレース]、[タイムライン]、[トレースを検索]が使用できます。使用する C-SPYドライバに応じて、さまざまなタイプのトレースブレークポイントやトリガを設定してトレースデータの収集を制御することができます。
C-SPY I-jet ドライバ C-SPY J-Link/J-Trace ドライバ、C-SPY ST-LINK ドライバ、または、C-SPY TI XDS ドライバを使用する場合、[割り込みログ]、[割り込みログサマリ]、[データログ]、[データログ一覧]などのウィンドウを使用できます。
ヒント
デバッグ時には、ETM および SWO という 2 つのボタンが IDE のメインウィンドウに表示されます。これらのボタンのどれかが緑の場合、対応するトレースハードウェアがトレースデータを生成中であることを意味します。C-SPY 機能がトレースデータの作成を要求したことについての詳細ツールチップ情報については、マウスポインタでボタンをポイントするだけです。この情報は、多くの C-SPY 機能が現在トレースデータを使用しているためにSWO 通信チャンネルがよくオーバフローする場合などに便利です。ボタンをクリックすると、対応する設定ダイアログボックスが開きます。
また、プロファイラやコードカバレッジ、命令プロファイリングなど、C-SPY の他のいくつかの機能でもトレースデータを使用します。
トレースを使用するための条件
C-SPY のシミュレータは、一部のコアおよびデバイスに対してトレース関連の機能をサポートしています。サポートしている場合は、さらなる要件はありません。
注記
使用するデバッグコンポーネントの特定のセット(ハードウェア、デバッグプローブ、C-SPY ドライバ)によって、サポートされる C-SPY のトレース機能が決まります。
MTB (Micro Trace Buffer)トレースを使用するための要件
MTB トレースを使用するには、MTB 付きの M0+ または M23 デバイス、および以下の選択肢のいずれかが必要です。
I-jetインサーキットデバッグプローブ
C-SPY CMSIS-DAPドライバおよびCMSIS-DAP対応のデバイス
J-Linkデバッグプローブ
SWOトレースを使用するための条件
SWO トレースを使用するには、SWO 通信チャネルをサポートする I-jet または I-jet Trace インサーキット デバッグ プローブ、J-Link、J-Trace、ST-LINK、または TI XDS デバッグ プローブ、および SWD/SWOインターフェースをサポートするデバイスが必要です。)
トレーストリガとトレースフィルタを使用する要件
トレーストリガとトレースフィルタ機能は、ETM、ETB、ETR、および PTMトレースで使用できますが、SWO または MTB トレースでは使用できません。
異なるプロセッサ、コア、およびデバッグプローブは、使用可能なトレーストリガとフィルターの数を制限することがあります。