連載
» 2006年10月03日 00時00分 公開

Windows CE 6の全貌(3):リモートデバッグとリモートツールの活用 (2/3)

[松井 俊訓/杉本 拓也 富士通ソフトウェアテクノロジーズ,@IT MONOist]

リモートツールの利用

 OSイメージの開発には、カーネルデバッガを利用する方法のほかに、本連載の第2回で紹介したリモートツールを使ったターゲットデバイスの解析も有効な手法の1つです。第1回で解説したようにWindows CE 6ではカーネルのメモリ管理方法が変更され、32個以上のプロセス起動が可能となっています。そこでリモートツールを使って、実際に32個以上のプロセスを起動できること確認してみたいと思います。

テスト用アプリの開発

 まず、32個以上のプロセスを起動するためのアプリケーションをOSイメージに追加します。アプリケーションのひな型としておなじみの「Hello Worldアプリケーション」を100個起動するアプリケーションを作成します。ワークスペースにアプリケーションのサブプロジェクトを追加するため、[Solution Explorer]の[ワークスペース名](ここでは[MyOSImage])を右クリックし、[Add New Subproject]を選択します。

 すると、[Windows CE Subproject Wizard]が表示されます。Platform Builder 5.0上でアプリケーションを作成するサブプロジェクトの生成時に表示されるダイアログと同じものです。まず「Available templates」で[WCE Application]を選択し、「Subproject name」にサブプロジェクト名、「Location」にサブプロジェクト格納パスを入力します。設定が終わったら[Next]ボタンで次に進みます。

[Windows CE Subproject Wizard]の「Select name、 location and template」画面 画面8 [Windows CE Subproject Wizard]の「Select name、 location and template」画面

 「Auto-generated subproject files」画面では、[A simple Windows CE application]ラジオボタンを選択して[Finish]ボタンを押します。

「Auto-generated subproject files」画面 画面9 「Auto-generated subproject files」画面

 以上で[Solution Explorer]の[Subprojects]にサブプロジェクト[TESTAPP]が追加され、C++プロジェクトが生成されます。

[Solution Explorer]にTESTAPPサブプロジェクトが追加された 画面10 [Solution Explorer]にTESTAPPサブプロジェクトが追加された

 TESTAPP.cppには、アプリケーションエントリポイントのWinMain関数がすでに実装されています。このWinMain関数に、100個のプロセスを実行する処理(下記ソースコード)を追加します。

    PROCESS_INFORMATION procInfo;
    for(int i = 0; i < 100; i++){
        CreateProcess(TEXT("TESTAPP2.exe"), NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, NULL, &procInfo);
    } 

コードを追加したWinMain関数 画面11 コードを追加したWinMain関数

 これにより、TESTAPPアプリケーションを実行するとTESTAPP2アプリケーションが100回起動されます。

 次にTESTAPP2アプリケーションを作成します。TESTAPPと同じ手順でサブプロジェクトを追加します。なお、「Auto-generated subproject files」画面では[A typical “Hello World” application]を選択します。

 以上で、アプリケーションの追加と実装は完了です。Visual Studio 2005の[Build]−[Build Solution]メニューでOSイメージを再構築します。サブプロジェクト内のBIBファイルに追加したアプリケーションをNK.BINに含めるように設定しているので、ワークスペースのサブプロジェクトとして追加したアプリケーションも自動的にOSイメージに組み込まれます。OSイメージのビルドが完了したら、[Target]−[Attach Device]メニューでOSイメージを起動します。

リモートでファイル構成を確認

 OSが起動したら、まずはTESTAPP.exeとTESTAPP2.exeがOSイメージに含まれていることを確認してみましょう。デバイス上でエクスプローラを起動しても確認できますが、ここでは「Remote File Viewer」を利用して確認してみます。Visual Studio 2005で[Target]−[Remote Tools]−[File Viewer]を選択します。

 ターゲットデバイスへ接続する設定は、[Connection]−[Configure Windows CE Platform Manager]メニューで行います。接続するデバイスを選択して[Properties]ボタンを押すと、[Device Properties]ダイアログが表示されます。「Transport」「Startup Server」コンボボックスで接続方式を選択します。ここではエミュレータに接続するため、[Transport]は[KITL Transport for Windows CE]、[Startup Server]は[KITL Boostrap Server]を選択しています。

[Device Properties]ダイアログ 画面12 [Device Properties]ダイアログ

 設定が終わったら、[Connection]−[Add Connection]メニューでターゲットデバイスに接続します。Windowsフォルダの配下を参照すると、TESTAPP.exeとTESTAPP2.exeが追加されていることが分かります。

Remote File Viewerの画面 画面13 Remote File Viewerの画面

 では、TESTAPP.exeを起動してみましょう。ターゲットデバイスで[スタート]メニューの[Run]を選択し、[Run]ダイアログで「TESTAPP」と入力して[OK]ボタンをクリックします。

TESTAPPの実行 画面14 TESTAPPの実行

 これでTESTAPP.exeが起動し、さらにTESTAPP2.exeが100個起動します。[Ctrl]+[Alt]+[Del]キーでタスクマネージャを開き、[Task Manager]ダイアログの[Active Tasks]リストを見ると、TESTAPP2が100個起動していることが分かります。

TESTAPPから起動されたTESTAPP2 画面15 TESTAPPから起動されたTESTAPP2

リモートでプロセスの状態を確認

 今度は、起動しているプロセスを「Remote Process Viewer」で確認してみます。Visual Studio 2005で[Target]−[Remote Tools]−[Process Viewer]を選択し、Remote File Viewerと同じ手順でターゲットデバイスに接続します。これで、「TESTAPP2.exe」が100個起動していることが確認できます。

Remote Process Viewerの画面 画面16 Remote Process Viewerの画面

 このように、リモートツールを利用することで開発マシンからターゲットデバイスの状態を参照できます。File ViewerやProcess Viewer以外にも、ヒープ情報やパフォーマンス測定、スレッド遷移などさまざまな情報を参照可能です。

Copyright © ITmedia, Inc. All Rights Reserved.