ハイパーバイザのデバッグについて

仮想化拡張機能をサポートしている ARM プロセッサには、ハイパーバイザの下で複数のゲストオペレーティングシステムを実行する機能があります。 ハイパーバイザは、ゲストオペレーティングシステム間を調停し、ハードウェアへのアクセスを制御するソフトウェアです。

DS-5 デバッガには、ベアメタルハイパーバイザのデバッグのベーシックサポートが用意されています。 仮想化拡張機能をサポートしているプロセッサと接続すると、デバッガによって、ハイパーバイザとゲストメモリを区別し、ハイパーバイザモード時や特定のゲストオペレーティングシステム内でのみ適用されるブレークポイントを設定できます。

一般的にハイパーバイザは、ハイパーバイザ自体の個別のアドレス空間だけでなく、各ゲストオペレーティングシステムのアドレス空間も提供します。 特に情報が与えられない限り、デバッガによるすべてのメモリアクセスは現在のコンテキスト内で発生します。 ハイパーバイザモードで停止すると、メモリアクセスではハイパーバイザのメモリ空間が使用され、ゲストオペレーティングシステムで停止すると、ゲストオペレーティンシステムのアドレス空間が使用されます。 特定のアドレス空間へのアクセスを強制するには、ハイパーバイザについては、接頭辞 H: を、 ゲストオペレーティングシステムについては接頭辞 N: をアドレスの前に付ける 必要があります。 ゲストオペレーティングシステムのアドレス空間にアクセスできるのは、そのゲストオペレーティンシステムが現時点でハイパーバイザ内で実行するようにスケジュールされている場合だけです。 別のゲストオペレーティングシステムを指定すことはできません。

同様に、ハードウェアブレークポイントとソフトウェアブレークポイントは、同じアドレス接頭辞を使用してハイパーバイザまたはゲストオペレティングシステムで一致するように設定できます。 アドレス接頭辞を使用しない場合、ブレークポイントは、最初に設定されたときに最新となているアドレス空間に適用されます。 ソフトウェアブレークポイントが、ハイパーバイザとゲストオペレーティングシステム間で共有されていメモリ内で設定されている場合、ブレークポイントは誤ったモードからヒットする可能性があります。その場合、デバッガは停止理由としてブレークポイントを認識できない場合があります。

ハードウェアブレークポイントについてのみ(ソフトウェアブレークポイントではない)、特定のゲストオペレーティングシステム内で一致するようにブレークポイントを追加設定できます。 この機能では、特定のゲストオペレーティングシステムが実行されているときに見分けるための、アーキテクチャ上で定義されている仮想マシン ID(VMID)レジスタが使用されます。 ハイパーバイザは、一意の VMID を各ゲストオペレーティングシステムに割り当て、そのゲストオぺレーティンシステムの実行時に VMID レジスタ内でこれを設定する役割を担います。 この機能を使用する場合は、ユーザがデバッグする各ゲストオペレーテングシステムにどの VMID が関連付けられているかを把握して下さい。 VMID を知っていると、[Breakpoints]ビュー内で、または break-stop-on-vmid コマンドを使用してこの VMID にブレークポイントを適用できます。

複数のゲストオペレーティングシステムが実行されているシステムをデバッグする場合は、set print current-vmid 設定を有効にして、デバッガが停止し、現在の VMID が変更されたときにコンソールで通知を受け取ることもできます。 また、$vmid デバッガ変数を使用して DS-5 スクリプト内で VMID を取得できます。

Show/hide関連項目

Copyright © 2010-2012 ARM. All rights reserved.ARM DUI 0446IJ
Non-ConfidentialID051512