6


7

Windows CE / Mobileアプリケーションのパフォーマンスのボトルネックを分析するために、Visual Studioのツール以外にどのようなツールを知っていますか? ネイティブコードにコンパイルされたC / Cアプリケーションのプロファイルを作成するために、AQTime for CE / Mobileのようなものを探しています。

4 回答


9


Windows CEは リモートコールプロファイラー(OEMがサポートを追加した場合)をそのまま使用できます。 私は、WinMoの画像は、通常その画像をすでにサポートしていると思います。 CEの場合は、IMAGEPROFILER環境変数セットを使用する必要があります(プロジェクトプロパティを使用する)。

MSDNで明確になっていないのは、Platform Builderで構築されていないアプリケーションをどのようにインスツルメントするかということですが、実際は非常に単純です。 コンパイラコマンドラインに/ callcapスイッチを追加し、リンカ設定にcecap.libを追加する必要があります。

もちろん、プロファイラデータをキャプチャして表示するためのツールが必要です。 そのためには、Platform Builderの評価版(http://www.microsoft.com/downloads/details.aspx?familyid=486e8250-d311-4f67-9fb3-23e8b8944f3e)を使用できます。

プロファイラの使い方の詳細については、CEコアチームのSue Lohが少しブログを書いています。


5


私はネイティブ開発用のWindowsMo​​bile用のそのようなツールを見つけていません。

私が見つけた最も近いのはEnTrekツールセット(CodeSnitch / ProcMan)ですが、それらは本当にプロファイリングツールではありません。 http://www.entrek.com/products.htm

私たちがしたのは、VC用のVistual Studioの "/ callcap"スイッチを使って、私たち自身の製品に自分自身のプロファイリングサポートを構築することです。 そのスイッチを使うことで、あなたが好きなようにタイミングとカウントをダンプするプロファイリングライブラリを構築することができます。 それはほとんどの場合うまくいきますが、時にはこれらのフック関数のオーバーヘッドが大きすぎてタイミングの結果が大量の関数呼び出しの領域に偏ってしまうことがあります。

MSDNドキュメントから:

_ _ / callcapオプションを使用すると、コンパイラーは各関数の最初と最後にプロファイリングフックの呼び出しを挿入します。

callcapスイッチを使わずにプロファイリングフックをコンパイルする必要があります。 callcapスイッチを使ってプロファイリングフック関数をコンパイルすると、その関数は自分自身に対して無限の再帰呼び出しを実行します。

次のコード例Callcaphooks.cは、callcapなしでコンパイルするためのプロファイリングフック関数_CAP_Enter_Functionを示しています。 _ _

// File: callcaphooks.c

#include
int main();

void _CAP_Enter_Function(void *p)
{
    if (p != main)
        printf("Enter function   (at address %p) at %d\n",
            p, GetTickCount());
        return;
}
void _CAP_Exit_Function(void *p)
{
    if (p != main)
        printf("Leaving function (at address %p) at %d\n",
            p, GetTickCount());
    return;
}


3


私はWindows Mobile用のコールグラフプロファイラを書きました。 現在(2010年1月現在)ベータ段階にあり、無料でダウンロードできます。

HTH

  • ザック


0


あなたが.NET CF開発をしているならば、http://www.microsoft.com/downloads/details.aspx?FamilyID = c8174c14-a27d-4148-bf01-86c2e0953eabをチェックしてください。