1

TL;DR

WinDBGlmvが 2 つのバージョン情報フィールドを表示するのはなぜですか (私が知っている他のツールではこれを実行できないのに)、どのような状況でこれらのフィールドが異なる可能性がありますか?


背景: アプリケーションの (デッドロックからの) ライブ ダンプがあります。pdm.dllシンボルは正しく読み込まれ、デッドロックをマイクロソフト(vbscript エンジンに使用される「プロセス デバッグ マネージャー」)までさかのぼることができました。

次に、この DLL のどのバージョンが本番サイトのセッションでロードされたかを確認したいと思いました。

0:000> lmv m pdm
start    end        module name
51860000 518b8000   pdm      # (pdb symbols)          d:\symcache\pdm.pdb\7BE601EDE9234816B72B49DA4A25DF042\pdm.pdb
    Loaded symbol image file: pdm.dll
    Image path: C:\Program Files (x86)\Common Files\Microsoft Shared\VS7DEBUG\pdm.dll
    Image name: pdm.dll
    Timestamp:        Tue Jul 29 16:46:11 2008 (488F2D33)
    CheckSum:         000663E0
    ImageSize:        00058000
??  File version:     9.0.30729.1
??  Product version:  9.0.30729.1
    File flags:       0 (Mask 3F)
    File OS:          4 Unknown Win32
    File type:        2.0 Dll
    File date:        00000000.00000000
    Translations:     0409.04b0
    CompanyName:      Microsoft Corporation
    ProductName:      Microsoft® Visual Studio .NET
    InternalName:     pdm.dll
    OriginalFilename: pdm.dll
??  ProductVersion:   7.10.3077
??  FileVersion:      7.10.3077
    FileDescription:  Process Debug Manager
    LegalCopyright:   Copyright© Microsoft Corporation.  All rights reserved.

ご覧のとおり、ファイルと製品のバージョンが 2 回表示されていますが、ダンプでは一致していません。

実行中の iexplore プロセスの同じファイルをマシンでクロスチェックすると (明らかに、タイムスタンプとチェックサムが表示されます!)、次のようになります。

0:043> lmv m pdm
start    end        module name
3efa0000 3eff8000   pdm        (pdb symbols)          c:\windows\symbols\martin-cache\pdm.pdb\415D0A165EB24613BC01CE516512062C2\pdm.pdb
    Loaded symbol image file: C:\Program Files (x86)\Internet Explorer\pdm.dll
    Image path: C:\Program Files (x86)\Internet Explorer\pdm.dll
    Image name: pdm.dll
    Timestamp:        Tue Jul 29 16:46:11 2008 (488F2D33)
    CheckSum:         000663E0
    ImageSize:        00058000
    File version:     9.0.30729.1
    Product version:  9.0.30729.1
    File flags:       0 (Mask 3F)
    File OS:          4 Unknown Win32
    File type:        2.0 Dll
    File date:        00000000.00000000
    Translations:     0409.04b0
    CompanyName:      Microsoft Corporation
    ProductName:      Microsoft® Visual Studio® 2008
    InternalName:     pdm.dll
    OriginalFilename: pdm.dll
    ProductVersion:   9.0.30729.1
    FileVersion:      9.0.30729.1 built by: SP
    FileDescription:  Process Debug Manager
    LegalCopyright:   © Microsoft Corporation. All rights reserved.

バージョン情報が一致します。

4

1 に答える 1

2

lmv は、リソース ファイルで定義されている文字列を表示します。

ここに画像の説明を入力

一部のスペースを除いて同じファイル/製品バージョン名の 2 つのセットに共通する理由がわかりません。

0:041> lmv m kernel32
start    end        module name
753e0000 754f0000   kernel32   (deferred)             
    Image path: C:\Windows\SysWOW64\kernel32.dll
    Image name: kernel32.dll
    Timestamp:        Fri Aug 02 03:53:25 2013 (51FB1115)
    CheckSum:         00111A9F
    ImageSize:        00110000
    File version:     6.1.7601.18229
    Product version:  6.1.7601.18229
    File flags:       0 (Mask 3F)
    File OS:          40004 NT Win32
    File type:        2.0 Dll
    File date:        00000000.00000000
    Translations:     0409.04b0
    CompanyName:      Microsoft Corporation
    ProductName:      Microsoft® Windows® Operating System
    InternalName:     kernel32
    OriginalFilename: kernel32
    ProductVersion:   6.1.7601.18229
    FileVersion:      6.1.7601.18229 (win7sp1_gdr.130801-1533)

あなたの場合、2 つの異なる dll があります。イメージ ファイルのパスを確認してください。

Image path: C:\Program Files (x86)\Common Files\Microsoft Shared\VS7DEBUG\

Image path: C:\Program Files (x86)\Internet Explorer

リソース セクションには異なる文字列が必要です。winDbg は表示することしかできません。タイム スタンプが同一であるため、いずれかが改ざんされている可能性があります。

于 2013-10-18T13:42:07.977 に答える