2014-05-21 6 views
6

Nach vielen Suchen konnte ich immer noch nicht die Lösung für die Frage bekommen.Wie bekomme ich die PDB-Datei für mscorlib.ni.lib (. NET Framework 3.5)

Ich habe eine MDPP-Datei. Der Aufruf-Stack zeigt, dass es mscorlib.ni.dll verwendet. Um die Funktionsinformationen zu erhalten, muss ich die pdb-Datei herunterladen.

Die Version von mscorlib.ni.dll ist 2.0.50727.3655. Ich glaube, es kommt von .Net Framework 3.5.

Da mscorlib.ni.dll ist die native optimierte DLL, die von ngen.exe generiert wird, so muss ich ngen.exe createpdb verwenden, um PDF für diese DLL zu generieren. Hier

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

ist das Ergebnis:

  1. Ich kann nicht ngen.exe in Ordner finden "C: \ Windows \ Microsoft.NET \ Framework64 \ v3.5"
  2. ich finden konnte ngen.exe im Ordner "C: \ Windows \ Microsoft.NET \ Framework64 \ v2", aber es hat keine createpdb Option.
  3. Ich konnte ngen.exe im Ordner "C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319" finden und es unterstützt die Option createpdb, aber es meldet Fehler.

Microsoft (R) CLR Native Image Generator - Version 4.0.30319.18408 Copyright (c) Microsoft Corporation. Alle Rechte vorbehalten. Ungültiger Header im systemeigenen Image 'C: \ Windows \ Assembly \ NativeImages_v2.0.507 7_64 \ mscorlib \ 5cd1c2848ff40eb0a8c149706ee394fa \ mscorlib.ni.dll' gefunden. Unbekannter Fehler (Ausnahme von HRESULT: 0x80004005 (E_FAIL))

So habe ich keine Ahnung, wie 3.5 die PDB für dieses mscorlib.ni.dll von Net Framework zu erhalten.

Irgendeine Idee?

+0

nicht sicher, ob es darauf ankommt, aber Sie führen ngen Version 4.0.30319.18408 auf einer Assembly von .net 2.0.507 (basierend auf diesem C: \ Windows \ Assembly \ NativeImages_v2.0.507). versuche, das ngen derselben Version zu verwenden. – Califf

+0

Die gleiche Version "ngen" 2.050727 unterstützt das Argument "createpdb" nicht. – Buzz

Antwort

6

Ich hatte die gleiche Fehlermeldung, bis ich realisierte ich ngen.exe aus dem Framework Ordner aufrufen. Offenbar war die mscorlib.ni.dll nicht 64-Bit.

So habe ich die 32-Bit-Version von ngen.exe aus dem Ordner C:\Windows\Microsoft.NET\Framework\v4.0.30319 und es wurde erfolgreich die PDB produziert.

Der Pfad zu Ihrer mscorlib.ni.dll enthält jedoch ...\NativeImages_v2.0.507 7_64\..., was darauf hinweist, dass es 64-Bit ist, also könnte dies ein anderes Problem sein.

1

Wie die Antwort von Monsignore, war für mich die Lösung, die Bit-Ness (64-Bit oder 32-Bit) zu entsprechen. Mein Minidump war 64-Bit, also musste ich in den Framework64-Ordner gehen und ngen von dort ausführen und es war in Ordnung. Ich habe ursprünglich den gleichen ngen Fehler wie hier beschrieben (ungültige Header gefunden in nativem Image ... E_FAIL), weil ich im Framework-Ordner anstelle des Framework64-Ordners (facepalm) war.

Obwohl der Ngen-Befehl funktioniert hat ... wurde die pdb, die letztendlich generiert wurde, von VS 2013 in meinem Szenario noch nicht als übereinstimmende Symboldatei akzeptiert.