Was sind .ni.dll- und .ni.exe-Dateien in einem Minidump?

8

Ich habe wegen eines Absturzes in meiner App einen Minidump aus dem Windows Store Apps-Übermittlungsprozess erhalten (der von einem Rezensenten gesendet wurde). Ich habe Probleme beim Laden der Symbole für meine App, da der Fehler in App.ni.exe auftritt, eine Datei, von der ich nicht weiß, woher sie kommt.

Meine App hat nur ein App.exe (und einige DLLs), aber der Dump bezieht sich immer auf .ni.dll und .ni.exe . Diese Dateien sind nirgendwo in meinen Dateien .appx oder .appxsym zu finden.

Meine App wird für jede spezifische Plattform (x86, x64 und ARM) erstellt. Es ist die x64-Version, die im Stackdump abgestürzt ist.

Meine aktuellen Versuche mit windbg:

Symbolpfad:

%Vor%

Windbg Versuch:

%Vor%

Update : Versuch ngen App.exe (läuft als Admin) Ich bekomme den folgenden Fehler:

%Vor%

Was ist in diesem Fall ein App-Container? Wo sollte ich es ausführen?

Update : Nach einer langen Zeit der Fehlersuche und der Ermittlung der Ursache auf andere Weise bin ich zu dem Schluss gekommen, dass die Minidump-Datei, die ich bekommen habe, diese Information nicht gefunden hat. Ganz gleich, ob es sich um ein Schmeichler handelt, der Debugger kann die Symbole für die Dateien laden.

    
Vegard Larsen 09.04.2013, 06:21
quelle

2 Antworten

9

Sehen Sie sich die Werkzeugbeschreibung Ngen.exe (Native Image Generator) :

  

Der native Image Generator (Ngen.exe) ist ein Tool, das die Leistung verwalteter Anwendungen verbessert. Ngen.exe erstellt systemeigene Images, bei denen es sich um kompilierten prozessorspezifischen Computercode handelt, und installiert sie im systemeigenen Image-Cache auf dem lokalen Computer. Die Laufzeitumgebung kann native Images aus dem Cache verwenden, anstatt den Just-in-Time-Compiler (JIT) zum Kompilieren der ursprünglichen Assembly zu verwenden.

Denken Sie daran, dass processor-specific machine code .

Wenn Sie Minidump mit NI-Images debuggen müssen, benötigen Sie Symbole (PDBs) für diese Bilder. Die PDBs für die verwaltete DLL funktionieren nicht, Sie müssen native PDBs für das NGEN-Image mit dem NGEN-Tool generieren, schauen Sie sich den Artikel Erstellung von NGEN-PDBs für Profilerstellung . Dieser Artikel beschreibt, wie man NGEN pdbs für den Profiler Report bekommt, aber zum Debuggen ist es das gleiche.

Wie gesagt, dass NGEN ein processor-specific machine code ist, um PDBs für sie zu erzeugen:

  

Da Bilder von NGEN nativ sind, ist es wichtig, dass Sie die Kopie von ngen.exe verwenden, die der Architektur der Anwendung entspricht, für die Sie ein Profil erstellen (x86 / x64 / ARM). Wenn die Anwendung z. B. 64 Bit unter Windows 8 RTM ausführt, müssen Sie auf die Kopie von ngen.exe in "C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319"

verweisen

UPDATE:

Aus dem Link oben:

  

Wenn Sie eine Windows Store-App remote profiliert haben, müssen Sie dies auf dem Computer tun, auf dem Sie die App beim Profiling ausgeführt haben. Es wird nicht funktionieren, wenn Sie es auf dem Computer tun, auf dem Sie den Bericht auf

anzeigen

Es sieht also so aus, als müssten Sie ngen Module / pdbs auf demselben Rechner erzeugen, auf dem Sie den Minidump haben.

Windows verfügt über einen nativen Image-Service , der ni-Images für Windows Store-Anwendungen nach einigen generiert Zeit, wenn Sie es auf Ihrem Computer installieren. Sie können versuchen, procmon.exe zu verwenden, um zu ermitteln, wie Windows ngen-Module für Anwendungen aus Windows Store generiert . (Verwenden Sie einfach den Filter für Prozessname mit ngen.exe).

    
outcoldman 09.04.2013, 18:35
quelle
3

NI = Natives Image Mit anderen Worten, NGEN'd Bilder wie die obigen Kommentare zeigen.

    
Steve Johnson 09.04.2013 18:19
quelle