9

多くの検索を行った後、私はまだ質問の解決策を得ることができませんでした.

mdmp ファイルがあります。コール スタックは、mscorlib.ni.dll を使用していることを示しています。関数情報を取得するには、その pdb ファイルを取得する必要があります。

mscorlib.ni.dll のバージョンは 2.0.50727.3655 です。.Net Framework 3.5 に由来すると思います。

mscorlib.ni.dll は ngen.exe によって生成されるネイティブに最適化された dll であるため、ngen.exe createpdb を使用してこの dll の pdf を生成する必要があります。

ngen.exe createpdb "C:\Windows\assembly\...\mscorlib.ni.dll" "C:\SymbolCache"

結果は次のとおりです。

  1. 「C:\Windows\Microsoft.NET\Framework64\v3.5」フォルダーに ngen.exe が見つかりません
  2. 「C:\Windows\Microsoft.NET\Framework64\v2」フォルダーに ngen.exe が見つかりましたが、createpdb オプションがありません。
  3. 「C:\Windows\Microsoft.NET\Framework64\v4.0.30319」フォルダーに ngen.exe があり、createpdb オプションをサポートしていますが、エラーが報告されます。

Microsoft (R) CLR Native Image Generator - バージョン 4.0.30319.18408 Copyright (c) Microsoft Corporation. 全著作権所有。ネイティブ イメージ 'C:\Windows\assembly\NativeImages_v2.0.507 7_64\mscorlib\5cd1c2848ff40eb0a8c149706ee394fa\mscorlib.ni.dll' に無効なヘッダーが見つかりました。不明なエラー (HRESULT からの例外: 0x80004005 (E_FAIL))

したがって、この Net Framework 3.5 の mscorlib.ni.dll の pdb を取得する方法がわかりません。

何か案が?

4

2 に答える 2

9

Framework 64フォルダーから ngen.exe を呼び出すことに気付くまで、同じエラー メッセージが表示されました。どうやら、mscorlib.ni.dll は 64 ビットではありませんでした。

そのため、フォルダーの 32 ビット バージョンの ngen.exe を使用する C:\Windows\Microsoft.NET\Framework\v4.0.30319と、PDB が正常に作成されました。

ただし、mscorlib.ni.dll へのパスには...\NativeImages_v2.0.507 7_64\...、64 ビットであることを示す が含まれているため、これは別の問題である可能性があります。

于 2015-06-29T17:22:39.827 に答える