Delphi COMコンポーネントがISAPI Webアプリケーションから呼び出されています。 COMコンポーネントは、MessageBox()を表示しようとしているため、アプリケーションをハングしています。ユーザコードにはMessageBox()呼び出しがありませんので、おそらく例外ハンドラコードでDelphiランタイムソースに配置する必要があります。IIS Debug Diagnosticsレポートを使用してDelphi COMコンポーネントのソースファイル行を検索する方法
モジュール名+オフセットアドレスを問題のコードとして示すIISデバッグ診断レポートがあります。
モジュール用の.MAPファイルがあり、MAP2DBGを使用して.dbgファイルも作成しています。
私たちの質問は、.MAPまたは.DBGファイルを使用して、オフセットアドレスを含むIISデバッグダイアグハングレポートを使用して、ソースコード行をどのように見つけるかです。
私たちはWinDbgを使用しようとしましたが、ソース行を見つけるために何をする必要があるか分かりませんでした。
+1すばらしい答えです。マップファイルはバグを発見する鍵であり、マップファイルを理解することは、展開後にポップアップする厄介なAVエラーを見つける秘訣です。このような理由から、ソースにタグ付きのソース管理のMAPファイルをリリースに保存する傾向があります。 – skamradt
ダンプファイルに対するIISデバッグレポートは、問題のアドレスとしてModuleName + 4974を示します。 WinDbgを使用してダンプファイルをロードすると、モジュールの開始は064F0000になります。 だから064F4974 - 064F000 = 4974です。4974 - 1000は3974です。私は.mapファイルにその番号の近くにも何も表示されません。私は何が欠けていますか? –
マップファイルには、「セグメントの詳細リスト」の一番上のセクションがあります。このセクションでは、最初の行は、私のマップファイルで次のようになります。 0001:00000000 00006B49 C = CODE S = .text G =(なし)M =システムACBP = A9 これはタイプ1(。テキスト)は、0から始まり$ 6B49バイトを実行します。これがあなたのマップファイルであれば、あなたのモジュールは 'System'モジュールであると言えます。さて、あなたがあなたのモジュールを特定したので、そのモジュールのためのこのようなセクションがあるはずです: "システム(GETMEM.INC)セグメント.text"の行番号。 –