非機密扱い | ![]() | ARM DUI0446ZJ | ||
| ||||
ホーム > DS-5デバッガの概要 > 概要:マルチコア(SMP および AMP)、 big.LITTLE 、およびマルチクラスタターゲットのデバッグ > SMP システムのデバッグ |
DS-5デバッガ 側から見ると、対称型マルチプロセッサ(SMP)は、1 つのマルチコア実行ブロックとして密結合され使用される、アーキテクチャ上同じコアのセットを参照します。また、デバッガ側から見ると、これらは一緒に開始および停止する必要があります。
DS-5デバッガ は、SMP システムが以下の要件を満たしていると想定します。
デバッガで SMP サポートを有効にするには、最初に[デバッグコンフィギュレーション]ダイアログボックスでデバッグセッションを設定する必要があります。デバッガで SMP サポートを有効にするために必要なことは、単一の SMP 接続の設定だけです。
SMP デバッグをサポートしているターゲットには、それらに対して指定される SMP があります。
ターゲットに接続したら、[デバッグ制御]ビューを使用して、SMP システムのすべてのコアと共に動作します。
SMP システムのデバッグ時は、イメージとシンボルのロード操作がすべての SMP プロセッサに適用されます。
イメージのロードの場合、これは、いずれかのプロセッサを介してイメージのコードとデータがメモリに 1 回書き込まれ、同じアドレスの他のプロセッサを介してアクセス可能であると見なされることを意味します。これは同じメモリを共有するためです。
シンボルのロードの場合、これは、デバッグ情報は 1 回ロードされ、いずれかのプロセッサのデバッグ時に使用可能であることを意味します。
SMP システムのデバッグ時は、1 つのプロセッサを実行しようとすると、システム内の他のすべてのプロセッサが自動的に実行されます。同様に、1 つのプロセッサが停止すると、停止要求か、ブレークポイントに到達するなどのイベントのためかのいずれかの理由で、システム内の他のプロセッサがすべて停止します。
命令レベルのシングルステップ実行コマンド( stepi および nexti )の場合、現在選択されているプロセッサは 1 つの命令をステップ実行します。
例外は、 nexti 操作が関数呼び出しをステップオーバーする必要がある場合です。この場合、デバッガは、ブレークポイントを設定してからすべてのプロセッサを実行します。他のすべてのステップ実行コマンドは、すべてのプロセッサに影響を及ぼします。
システムによっては、実行または停止しているさまざまなコア間で遅延がある場合があります。デバッガは各コアを個別に実行または停止する必要があるので、この遅延は非常に大きくなる可能性があります。ただし、ほとんどの SMP システムにおけるハードウェアクロストリガの実装により、遅延は最小限であり、数回のプロセッサクロックのサイクルに限定されることが確認されます。
めったにありませんが、1 つのプロセッサが停止し、そのために他のプロセッサが応答できなくなることがあります。例えば、これは、セキュアモードでコードを実行しているプロセッサが一時的にデバッグ機能を無効にしたときに発生することがあります。これが発生すると、[デバッグ制御]ビューに各プロセッサの個々の状態(実行中または停止)が表示されるので、停止できなかったプロセッサを確認できます。すべてのプロセッサが停止するまで、後続の実行およびステップ実行操作を正常に動作できない場合があります。
デフォルトでは、SMP システムのデバッグ時は、ブレークポイント、ウォッチポイント、およびシグナル(ベクタキャッチ)操作がすべてのプロセッサに適用されます。これは、条件を満たすコードをいずれかのプロセッサが実行するときに 1 つのブレークポイントをトリガするよう設定できることを意味します。デバッガがブレークポイント、ウォッチポイント、またはシグナルのために停止したときは、イベントを発生させたプロセッサが[コマンド]ビューに表示されます。
関連する[プロパティ]ダイアログボックスで必要なプロセッサを選択することによって、1 つまたは複数のプロセッサについてブレークポイントまたはウォッチポイントを設定できます。あるいは、break-stop-on-cores コマンドを使用することもできます。ここの機能はシグナルには使用できません。
レジスタ、コールスタック、メモリ、逆アセンブリ、式、変数などターゲット状態のビューには、 プロセッサ固有の内容が含まれています。[ブレークポイント]、[信号]、[コマンド]などのビューは、SMP システム内のすべてのプロセッサで共有され、プロセッサが現在選択されているかどうかに関係なく、同じ内容を表示します。
トレースのサポートが有効になる接続を使用している場合は、 [トレース]ビューを使用して、システム内の各プロセッサのトレースを表示できます。
デフォルトでは、[トレース]ビューには、[デバッグ制御]ビューで現在選択されているプロセッサのトレースが表示されます。あるいは、[トレース]ビューの[Linked: context]ツールバーオプションを使用することで、その[トレース]ビューを特定のプロセッサにリンクすることを選択できます。特定のプロセッサにリンクされる複数の[トレース]ビューを作成すると、複数のプロセッサからトレースを同時に表示できるようになります。