Ist es möglich, Baugruppen zu debuggen, die mit Mono / XBuild mit Visual Studio unter Windows kompiliert wurden?

8

Ich verwende XBuild, um Visual Studio-Lösungen für Mono zu kompilieren. Dies generiert die Assembly + MDB-Datei. Gibt es eine Möglichkeit, diese Assembly mit Visual Studio unter Windows zu debuggen? Wenn "Attach to process" verwendet wird, kann ich nicht debuggen, weil ein Fehler angezeigt wird, dass die Symbole nicht geladen sind.

Ich habe versucht, die PDB-Datei für diese Assembly über Mono.Cecil (AssemblyDefinition, MdbReaderProvider, PdbWriterProvider) zu generieren und manuell über Debug / Windows / Modules und "Symbol von / Symbolpfad laden" zu laden, wodurch die Symbole geladen werden im Fenster Module), aber das Debuggen wird auch nicht aktiviert.

    
Dresel 21.11.2012, 18:06
quelle

2 Antworten

6

Beim Vergleich von Baugruppendefinitionen zwischen VS2012-Builds und XBuild-Builds habe ich festgestellt, dass XBuild das DebuggableAttribute nicht generiert. Wenn dieses Attribut fehlt, ist das Debuggen mit Visual Studio 2012 nicht möglich, selbst wenn Sie die Symbole manuell laden. Die folgenden Schritte werden benötigt, um Baugruppen zu debuggen, die mit Mono / XBuild mit VS2012 kompiliert wurden:

  1. Verwenden Sie XBuild, um die Lösung zu kompilieren
  2. Verwenden Sie Mono.Cecil für jede Assembly, die Sie debuggen möchten, um die pdb-Datei zu generieren und das DebuggableAttribute (siehe Code unten) zu injizieren
  3. Starten Sie Ihr mit XBuild kompiliertes Programm
  4. Verwenden Sie "Debug / Attach to process ..." von VS2012, um das laufende Programm zu debuggen

Code zum Generieren von pdb und zum Injizieren von DebuggableAttribute:

%Vor%     
Dresel 22.11.2012, 18:41
quelle
4

Dies ist mit einer einmaligen Anstrengung möglich.

Sie müssen die Mono mdb Dateien in pdb Dateien konvertieren. Danach sollte VS in der Lage sein, mit Ihnen durch den Code zu gehen (wenn Sie auch die Quellen haben) - siehe unten.

Ссылка

Mono.Cecil ändert sich ziemlich häufig, daher könnten Sie feststellen, dass sich die API ein wenig geändert hat.

    
IanNorton 22.11.2012 07:45
quelle