5.3 トレースサポートについて

ARM® DS-5 を使用すると、アプリケーションまたはシステムでトレースを実行できます。トレースは、命令とデータアクセスの以前の非侵襲型デバッグをリアルタイムにキャプチャする機能です。これは、システムがフルスピードで実行されている間に問題を調査できる強力なツールです。これらの問題は断続的である可能性があり、プロセッサの開始と停止を要する従来のデバッグ手法では特定が困難です。トレースは、潜在的なボトルネックを特定する場合や、アプリケーションのパフォーマンス重視の部分を向上させる場合でも役立ちます。
デバッガでアプリケーションでの関数の実行をトレースする前に、以下のことを確認する必要があります。
  • デバッグハードウェアエージェントがあること(トレースストリームへの接続がある ARM DSTREAM\VSTREAM ユニットなど)
  • デバッガがデバッグハードウェアエージェントに接続されていること

トレースハードウェア

トレースは通常、プロセッサに接続されている外部ハードウェアブロックによって提供されます。これは、 組込みトレースマクロセルl (ETM) または プログラムトレースマクロセルPTM と呼ばれ、ARM アーキテクチャベースシステムのオプションの部分です。System-on-chip 設計者が、このブロックをシリコンから省いてコストを削減することがあります。これらのブロックは、プロセッサの動作を監視するので(ただし動作には影響は与えない)、命令の実行とデータアクセスを監視できます。
トレースのキャプチャには 2 つの重要な問題があります。1 つ目は、プロセッサクロック速度が非常に高く、ほんの数秒の操作でも数十億サイクルが実行されることです。この情報量を参照することは明らかに困難です。2 つ目の関連する問題は、最新のプロセッサでは、サイクルあたり 1 つまたは複数の 64 ビットのキャッシュアクセスが実行される可能性があることと、データアドレスとデータ値の両方を記録する場合に大きな帯域幅が必要になる可能性があることです。その問題はよく発生するので、数本のピンがチップ上に用意されており、プロセッサをクロッキング可能なレートより大幅に低いレートでこれらの出力を切り替えることができることがあります。トレースポートの容量は簡単に超えてしまいます。この後半の問題を解決するには、トレースマクロセルで情報を圧縮し、必要な帯域幅を減らします。ただし、これらの問題に対処する主な方法は、選択したトレース情報のみを収集するようトレースブロックを制御する方法です。例えば、データ値を記録しないで実行のみをトレースしたり、特定のペリフェラルに対して、または特定の関数の実行時に、データアクセスのみをトレースしたりできます。
さらに、オンチップメモリバッファである Embedded Trace BufferETB にトレース情報を格納することはよくあります。これは、情報を高速かつオフチップで取得する問題を軽減しますが、シリコンの面積の点で追加のコストがかかり、さらにキャプチャできるトレースの量が制限されます。
ETB は圧縮したトレース情報を循環形式で保存し、停止するまで継続してトレース情報をキャプチャします。ETB のサイズはチップの実装によって異なりますが、通常は、数千行のプログラムトレースの保持には 8KB または 16KB のバッファで十分です。
プログラムが失敗した場合、トレースバッファが有効であると、プログラム履歴の一部を表示できます。このプログラム履歴を表示することで、プログラムを逆戻りして、障害発生時点の前に何が発生したかを簡単に確認できます。これは、プロセッサの開始と停止を要する従来のデバッグ手法では特定が困難である断続的な障害やリアルタイムな障害の調査に特に役立ちます。トレースは実行されたものを正確に示すため、ハードウェアトレースを使用するとこれらの障害の特定に要する時間が大幅に短縮されます。

トレース範囲

トレース範囲により、連続したメモリの範囲にトレースのキャプチャを制限できます。トレース範囲には、仮想メモリに開始アドレスと終了アドレスがあり、このアドレス範囲内の実行がキャプチャされます。トレースの始点と終点とは別に、トレース範囲内で行われた関数呼び出しは、関数呼び出しのターゲットも指定したアドレス範囲内にある場合にのみ、キャプチャされます。有効にできるトレース範囲の数は、プロセッサのデバッグハードウェアによって決まります。
トレース範囲が設定されていない場合は、トレースキャプチャはデフォルトで有効になっています。トレース範囲が設定されている場合、トレースキャプチャはデフォルトで無効になっており、定義された範囲内でのみ有効になります。
トレースビューの[範囲]タブを使用してトレース範囲を設定できます。各範囲の開始アドレスと終了アドレスには、絶対アドレスまたは式(関数の名前など)のいずれかを指定できます。コンパイラの最適化により、メモリ内のコードが、関連するソースコードから再配置または最小化されることに注意してください。これによって、コードが予期しない形で、トレースキャプチャに含まれたり、除外されたりすることがあります。

トレースポイント

トレースポイントでは、プログラムでトレースがキャプチャされる位置を厳密に制御できます。トレースポイントは、非侵入型であり、システムで処理を停止させる必要がありません。設定できるトレースポイントの最大数は、プロセッサのデバッグハードウェアによって決まります。以下の種類のトレースポイントがあります。ソースビューでトレースポイントを設定するには、余白を右クリックし、[DS-5 ブレークポイント]コンテキストメニューから必要なオプションを選択します。逆アセンブリビューでトレースポイントを設定するには、命令を右クリックし、[DS-5 ブレークポイント]コンテキストメニューから必要なオプションを選択します。トレースポイントはブレークポイントビューに一覧表示されます。
トレースの始点
実行が選択したアドレスに達したときにトレースキャプチャを有効にします。
トレースの終点
実行が選択したアドレスに達したときにトレースキャプチャを無効にします。
トレースのトリガポイント
トレースビューで簡単に検索できるように、ソースコードでこのポイントをマークします。
トレースの始点はトレースのキャプチャを有効にし、トレースの終点はトレースのキャプチャを無効にします。トレースポイントはネストを考慮しません。たとえば、行において 2 つのトレースの始点に達した後に、2 つのトレースの終点に達した場合、最初のトレースの終点(2 番目ではない)に達するとすぐにトレースは無効になります。トレースの始点が設定されていない場合、トレースはデフォルトで常に有効になります。トレースの始点が設定されている場合、トレースはデフォルトで無効になり、最初のトレースの始点に達したときにだけ有効になります。
トレースのトリガポイントを使用すると、ソースコードの関心のある位置をマークできるため、後でトレースビューで簡単に検索できます。最初にトリガポイントに達すると、トレースのトリガイベントレコードがトレースバッファに挿入されます。最初に達したトリガポイントのみが、トリガイベントレコードに挿入されます。トレースのトリガポイントに達したときにデバッガがトレース収集を停止するように設定するには、トレースビューの[トリガ時にトレースキャプチャを停止]タブの[プロパティ]チェックボックスを使用します。

これによってターゲットは停止されません。トレースのキャプチャのみが停止されます。ターゲットは通常、ブレークポイントをヒットするか、デバッグ制御ビューで[Interrupt(中断)]アイコンをクリックするまで実行されます。
これを設定すると、[Trace(トレース)]ビューの[プロパティ]タブの[ポストトリガキャプチャのサイズ]フィールドを使用してトレースのトリガポイントの前後でキャプチャされるトレースの量を指定できます。このフィールドを設定した場合、以下のようになります。
0%
トレースキャプチャは、最初のトリガポイントに達するとすぐに停止します。トリガイベントレコードは、トレースバッファの末尾近くで見つかることがあります。
50%
トレースキャプチャは、最初のトリガポイントに達し、さらに 50% のバッファが充填されるとすぐに停止します。トリガイベントレコードは、トレースバッファの中心近くで見つかることがあります。
99%
トレースキャプチャは、最初のトリガポイントに達し、さらに 99% のバッファが充填されるとすぐに停止します。トリガイベントレコードは、トレースバッファの最初近くで見つかることがあります。

ターゲットのタイミングの制約上、トリガイベントレコードがトレースバッファから外に押し出されることがあります。
キャプチャできるトレースの数が非常に少ない ETB のようなキャプチャデバイスを使用している場合は、トレースキャプチャを正確な目的領域に制限することが特に役立ちます。
ビューメニューの[Find Trigger Event record(トリガイベントレコードの検出)]オプションを選択して、トレースバッファのトリガイベントレコードを特定します。

トレーストリガ機能は、トリガ条件が発生した ETBVSTREAM などのトレースキャプチャハードウェアに信号を伝えるターゲットプラットフォームによって異なります。このハードウェア信号が存在しないか、正しく設定されていない場合、トリガポイント周辺で自動的にトレースキャプチャを停止できない場合があります。
関連する概念
5.4 トレースデータの事後分析デバッグについて
1.5  DS-5 ヘッドレスコマンドラインデバッガについて
関連する作業
1.7 ヘッドレスコマンドラインデバッガを使用したカスタムコンフィギュレーションデータベースの指定
関連する参考文書
1.6 ヘッドレスコマンドラインデバッガのオプション
非機密扱いPDF file icon PDF 版ARM DUI0446VJ
Copyright © 2010-2015 ARM.All rights reserved.