私の仕事には、ソースがないサードパーティツールを使用したシステムレベルのパフォーマンステストが含まれます。私はWindowsもテストしており、デバッグシンボルは使用できますが、Windowsソースコードは使用できません。テストでカバーするホストOSの領域を定量的に説明したいと思います。これには2つの大きなステップがあります。調べたいDLLと関数を特定し、それらへの呼び出しをプロファイリングする方法を決定します。
カバレッジのアイデア:
- kernel.dll、ntdll.dll、user.dllなどのすべての関数...メインの組み込みモジュール。これは膨大な量のやり過ぎかもしれず、おそらく非推奨の機能にのみ関係する多くのギャップを特定するでしょう。
- ターゲットアプリケーションで使用されるDLLのモジュール名のみ。詳細ではありませんが、ターゲットアプリの主要な機能を見逃す可能性も低くなります。
- DirectX10アプリ用のd3d10.dllなどのアプリ固有のモジュール。
- 基本ブロック。これは博士論文の仕事量になると思います。
プロファイリングのアイデア:
- すべてのテストでVTuneコールグラフ分析を実行します。この種の作業は機能しますが、実際に呼び出される組み込み関数のビューが制限されているようです。
- PinやDynamoRIOなどを使用してアプリを動的にインストルメント化します。考えられる欠点:遅い。
- WinDbgで通話をキャッチします。これがピンよりも簡単か速いかはわかりません。
- IDAProなどの分解ツールを使用した静的分析。
Windowsでこれらの方針に沿って公開された作品はありますか?これらのツールの1つをフックまたはロギングに使用して、推奨できるほど十分に使用したことがありますか?