2014-05-21 24 views
6

Dopo aver eseguito molte ricerche, non sono riuscito a ottenere la soluzione per la domanda.Come ottenere il file PDB per mscorlib.ni.lib (.Net Framework 3.5)

Ho un file mdmp. Lo stack di chiamate mostra che sta utilizzando mscorlib.ni.dll. Quindi, per ottenere le informazioni sulla funzione, ho bisogno di ottenere il suo file pdb.

La versione di mscorlib.ni.dll è 2.0.50727.3655. Credo che provenga da .Net Framework 3.5.

Poiché mscorlib.ni.dll è la dll ottimizzata nativa che è generata da ngen.exe, quindi ho bisogno di usare ngen.exe createpdb per generare pdf per questa dll.

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

Ecco il risultato:

  1. Non riesco a trovare Ngen.exe nella cartella "C: \ Windows \ Microsoft.NET \ Framework64 \ v3.5"
  2. sono riuscito a trovare ngen.exe nella cartella "C: \ Windows \ Microsoft.NET \ Framework64 \ v2", ma non ha l'opzione createpdb.
  3. Sono riuscito a trovare ngen.exe nella cartella "C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319" e supporta l'opzione createpdb, ma riporta un errore.

Microsoft (R) CLR nativo Image Generator - Versione 4.0.30319.18408 Copyright (c) Microsoft Corporation. Tutti i diritti riservati. Intestazione non valida trovata nell'immagine nativa 'C: \ Windows \ assembly \ NativeImages_v2.0.507 7_64 \ mscorlib \ 5cd1c2848ff40eb0a8c149706ee394fa \ mscorlib.ni.dll'. errore non specificato (Eccezione da HRESULT: 0x80004005 (E_FAIL))

quindi non ho idea di come ottenere il PPB per questo mscorlib.ni.dll di Net Framework 3.5.

Qualche idea?

+0

non è sicuro se è importante, ma si esegue ngen ver versione 4.0.30319.18408 su un assembly da .net 2.0.507 (basato su questo C: \ Windows \ assembly \ NativeImages_v2.0.507). prova ad usare il ngen della stessa versione. – Califf

+0

La stessa versione "ngen" 2.050727 non supporta l'argomento "createpdb". – Buzz

risposta

6

Ho ricevuto lo stesso messaggio di errore fino a quando mi sono reso conto che richiamo ngen.exe dalla cartella Framework . Apparentemente, mscorlib.ni.dll non era 64-bit.

Quindi ho utilizzato la versione a 32 bit di ngen.exe dalla cartella C:\Windows\Microsoft.NET\Framework\v4.0.30319 e ha prodotto correttamente il PDB.

Tuttavia, il percorso di mscorlib.ni.dll include ...\NativeImages_v2.0.507 7_64\..., che indica che è a 64 bit, quindi questo potrebbe essere un problema diverso.

1

Come la risposta di Monsignore, per me la soluzione era quella di abbinare la bit-ness (64-bit o 32-bit). Il mio minidump era 64 bit, quindi sono dovuto andare alla cartella Framework64 ed eseguire ngen da lì ed era tutto a posto. Originariamente avevo lo stesso errore di ngen come descritto qui (Intestazione non valida trovata nell'immagine nativa ... E_FAIL) perché ero nella cartella Framework invece della cartella Framework64 (facepalm).

Tuttavia, anche se il comando ngen funzionava ... il pdb generato in definitiva non era ancora accettato da VS 2013 come file di simboli corrispondenti, nel mio scenario.

Problemi correlati