今回はDelphi/400アプリケーションを実行時に、
PC内で参照しているファイルをトレース調査するテクニックをご紹介いたします。
(Delphi/400以外のあらゆるWindowsアプリケーションでも活用できます。)
アプリケーションの配布では、そのアプリケーションが必要とする
設定ファイルやDLLなどを正しく配置する必要があります。
しかし実際に運用環境を構築する際には、想定して配置したファイルが
正しく読み込めずエラーになってしまう場合もあります。
こうしたエラーは、実際にファイルが存在しない場合もあれば、
権限によって読み込めない、あるいはレジストリが適切でないなど、原因が様々です。
開発環境ではデバッグを元に調査することもできますが、
運用環境であればMicrosoft社のProcess Monitorというツールが役立ちます。
◆Process Monitor(プロセスモニター)
https://learn.microsoft.com/ja-jp/sysinternals/downloads/procmon/
◆ログファイル取得手順
1.
上記リンク先から取得したzipを解凍したら
「Procmon.exe」を起動します。(※管理者権限強制)
2.
初回起動時のみ以下のような使用許諾画面が表示されるので「Agree」を選択します。

3.
メイン画面は以下のようなイメージです。赤枠で囲んだ4つのボタンを主に使用します。

| icon | ボタン名 | 役割 |
|---|---|---|
![]() | Save | 取得したログをファイルに出力します。(後述) |
![]() | Capture | ログ取得の開始/一時停止の切り替えを行います。 |
![]() | Clear | 取得済みのログをクリアします。 |
![]() | Filter | ログのフィルター設定を行います。(後述) |
4.
初期状態では初期設定された全てのログ(Windowsシステム等)を取得し続けて
PCに負荷をかけるため、Captureボタンを押してログ取得を一時停止します。
5.
Filterボタンを押して、目的のアプリケーションのログのみ取得する設定を追加します。
下図のように対象の「Process Name(EXE名)」を「Include(含める)」する設定で
「Add」ボタンを押すと、フィルターの条件に追加されます。
(※開発端末でDelphi本体のログを取る場合は「bds.exe」を追加します。※V2007~)
(※他にも処理日時やパスなどの絞り込み条件も存在します。)

6.
Clearボタンを押して既存のログを削除し、
Captureボタンを押してログ取得を再開したら、
先ほどFilterで指定したアプリケーションを起動し、目的の処理を実行します。
7.
目的の処理で調査したい事象(エラーやフリーズなど)を再現できたら、
Captureボタンを押してログ取得を一時停止します。
8.
Saveボタンを押して、保存ダイアログを表示させます。
下図のように設定したフィルタの行のみをCSV形式で出力するのが推奨となります。
(初期値のPML形式はファイルサイズが大きく他のソフトウェアで解析が困難です)
出力先のパスを指定して「OK」を押すと、その場所にログファイルが出力されます。

9.
出力されたログを解析し、想定しない事象の原因を調査します。
(CSVをExcelで開いてフィルターするのが最もシンプルです。)

「Result」が「SUCCESS」以外の行で、正常なログと想定外なログがあるので精査していく
Process Monitorは英語版にはなりますが、無償かつ単純な操作で利用ができ、
ファイルやレジストリの参照状況を調査するには非常に有効なツールなので、是非ご活用ください。
(弊社テクニカルサポートでも、この方法での調査をお客様に依頼することが多いです。)
特定端末でのみ異常が発生している場合は、
このツールを正常環境にも導入することで容易に比較できます。
(ミガロ.情報マガジン「MIGARO News!!」Vol.200 2017年7月号より)



