- - PR -
前回は、Visual Studio 2005を利用してOSイメージを作成し、それを起動するところまでを解説しました。今回はOSのリモートデバッグおよびリモートツールの解析手法について解説します。
リモートデバッグとカーネルデバッグ
Visual StudioやeMbedded Visual C++には、開発マシンとターゲットデバイスを接続し、ビルドしたアプリケーションを開発マシンからターゲットデバイスへ転送したり、リモートデバッグする機能があります。リモートデバッグでは、PC上で動作するWindowsアプリケーションと同じように、リモートでステップ実行や変数の監視が可能です。
OSイメージもアプリケーションと同じように、リモートデバッグを行うことができます。OSイメージのデバッグを行うことを「カーネルデバッグ」と呼びます。カーネルデバッグでは、OSモジュールやデバイスドライバ、アプリケーションのデバッグが可能です。当然のことながら、ソースコード上にブレークポイントを設定してのステップ実行や変数の参照が可能です。
ターゲットデバイスとの接続はイーサネット、USB、シリアルケーブルなどを利用します。接続の際は、「KITL(Kernel Independent Transport Layer)」という機能を利用します。これは名前のとおり、OSカーネルから独立した接続レイヤで開発マシンとターゲットデバイスを接続する機能です。
カーネルデバッグ対応イメージの作成
カーネルデバッグを行うには、カーネルデバッグをサポートするOSイメージを構築する必要があります。つまり、OSイメージもアプリケーションと同じように、「リリース版」「デバッグ版」の作成が可能です。
![]() |
| 画面1 ビルド方法の選択。「Debug」「Release」の区別があることが分かる |
カーネルデバッグ対応イメージの設定は、Visual Studio 2005の[Solution Explorer]の[ワークスペース名](ここでは[MyOSImage])を右クリックし、[Properties]を選択します。
![]() |
| 画面2 Solution Explorerで開いたコンテキストメニュー |
[ワークスペース名 Properties Page]ダイアログが表示されます。左側のツリービューで[Configuration Properties]−[Build Options]を選択し、右側の[Build Options]リストで[Enable Kernel Debugger]のチェックボックスを有効にします。また、前述のKITLを有効にするために[Enable KITL]も有効にします。
![]() |
| 画面3 ビルドオプションの設定(画像をクリックすると拡大します) |
この2つのチェックボックスを有効化した状態でビルドすると、カーネルデバッグに対応したOSイメージが生成されます。
ターゲットデバイスとの接続
次に、Visual Studio 2005とターゲットデバイスを接続するための設定を行います。[Target]メニューで[Connectivity Options]を選択すると、[Target Device Connectivity Options]ダイアログが表示されます。
- [Download]コンボボックス:接続方法
- [Transport]コンボボックス:接続で利用するトランスポート
をそれぞれ設定します。ここではエミュレータに接続するため、[Download][Transport]ともに[Device Emulator(DMA)]を選択しています。なお、カーネルデバッガを利用する場合、[Debugger]コンボボックスは[KdStub]を選択します。
![]() |
| 画面4 [Target Device Connectivity Options]ダイアログ |
設定が完了したら、ターゲットデバイスと実際に接続します。[Target]メニューで[Attach Device]をクリックするとターゲットデバイスと接続し、OSイメージが転送された後にOSを起動します。
![]() |
| 画面5 OSイメージ転送中 |
カーネルデバッガを有効にしている場合は、起動時にデバッグサービスも開始されます。
![]() |
| 画面6 エミュレータ上で起動したWindows CE 6(画像をクリックすると拡大します) |
この時点でKITLとカーネルデバッガが有効になっていれば、自動的にデバッグ接続が確立され、Visual Studio 2005とターゲットデバイス間でリモートデバッグできる状態になります。画面7は、ディスプレイドライバの初期化コードにブレークポイントを設定して、ステップ実行している画面です。変数ビューにて、ブレークしている個所の変数を参照できます。
![]() |
| 画面7 リモートでステップ実行している画面(画像をクリックすると拡大します) |
組み込み開発フォーラム 新着記事
- フルスクラッチの“Hello World”を動かしてみよう(2011/3/31)
- FlexRayプロトコルの概要(その2)(2011/3/29)
- JASA、東北地域に拠点を置く会員企業を支援(2011/3/25)
- NEC、震災の影響を受けた4拠点の生産再開を発表(2011/3/23)
- 内部ブロック図の基礎と共通要素(2011/3/22)
- インテル、被災地におけるITインフラの復旧を支援(2011/3/22)
- Facts on AUTOSAR/AUTOSAR導入の現実(2011/3/18)
- 計測器・震災被害ホットラインを開設、テクトロニクス(2011/3/18)
- ZMP、地震の揺れを多角的に計測するアプリ無償配布(2011/3/16)
- メンター、3Dテレビ・マルチメディア検証プラットフォーム(2011/3/16)
- 【番外編】タチの良い計測値、悪い計測値とは?(2011/3/15)
- tarファイルシステムをAndroidに組み込む!!(2011/3/10)











