2015-07-08 12 views
16

Ich versuche JetBrains dotPeek 1.4 Symbolserver verwenden jedoch habe ich einige 3rd-Party-Baugruppen auftreten, die fehlschlagen, mit dotPeek Status:DotPeek PDB Generation für Baugruppen ohne Debug-Verzeichnis

Pdb has not been generated because assembly does not contain debug directory 

Mit CFF Explorer I habe festgestellt, dass diese Assemblies leere Headerwerte für portable ausführbare Dateien ("Debug Directory") haben.

Gibt es eine (einfache) Möglichkeit, die PE zu bearbeiten, um Debug Directory-Headerwerte hinzuzufügen?

Antwort

4

de4dot erstellt ungültiges ausführbares .net-Modul in den Augen von dotPeek. Es ist ein Problem von dotPeek, nicht von de4dot. Aber da wir keine Quellen für dotPeek haben, sollten wir stattdessen de4dot modifizieren, um Interoperabilität zu erreichen. ändern: de4dot.code/AssemblyModule.cs Modul hinzugefügt

writerOptions.WritePdb = true; 
module.CreatePdbState(); 

Funktion de4dot.code.AssemblyModule.Save und Sie füllen gültige PDB-Funktion in exe-Modul.

Um Ihre Zeit zu sparen, können Sie de4dot Projekt mit meinem Patch verwenden: https://github.com/earnol/de4dot/commit/24c6e696fb9251f7d048ac33c88c710013a649d6 Es wird Debug-Verzeichnis zu der ausführbaren Ausgabedatei hinzufügen. Löschen Sie einfach die resultierende PDB und führen Sie dotPeek erneut aus. Es wird einwandfrei funktionieren. Verwenden Sie etwas wie: de4dot.exe -f filein.exe -o fileout.exe -fpdb

+0

Ich habe @ ainz-ooal-Gowns Modifikation auf die neueste de4dot-Version angewendet und eine binäre Version zum Download kompiliert: https: // github .com/djkrose/de4dot/freigaben/tag/v3.1.41592-fpdb – Hannobo