2010-04-12 10 views
7

Ich habe eine ausführbare .NET-Datei, die ich debuggen muss. Ich würde gerne darin treten, so dass es bei der ersten Anweisung aufhört und eine visuelle Schnittstelle für Single-Stepping, Breakpoints usw. hat.Wie debugge ich eine .NET-Programmdatei auf MSIL-Ebene?

Das scheint wie es einfacher sein sollte, aber ich habe noch keine Lösung gefunden! Ich lese über DbgCLR.exe im Internet, aber ich kann diese Datei nicht auf meinem System oder online für das Leben von mir finden. Ich habe auch irgendwo gelesen, dass DbgCLR.exe nicht mehr notwendig ist, weil Visual Studio das gleiche tun kann. Eine Visual Studio .NET-Lösung wäre auch großartig! (Vielleicht gibt es einen Menüpunkt, die ich übersehen?)

Entweder wird, passen so lange, wie ich den Stapel inspizieren können, Haltepunkte zu setzen usw.

+0

Gute Frage. Ich habe NTSD vor Jahren zum Debuggen von JIT-ed MSIL-Code verwendet. Das war eine wahre Freude ... Schau dir http://www.microsoft.com/whdc/devtools/debugging/ an und lass es mich wissen, wenn es jetzt etwas höheres Level gibt. –

+0

Wenn Sie über Symbole und Quellen verfügen, können Sie VS verwenden, um eine Verbindung mit dem Prozess herzustellen, und angeben, dass das Debugging im Dialogfeld Anfügen verwaltet werden soll. –

Antwort

1

Wenn Sie eins sind, um Dienstprogramme zu kaufen - Red Gets neuer .NET Reflektor Pro macht genau diese Situation wirklich gut ($ 195). Ich denke, Sie können eine Evaluierungsversion, die für eine Weile auf Red Gate's site

dauern Ich habe DILE in der Vergangenheit zu tun, dass in IL, aus irgendeinem Grund habe ich gemischte Erfahrungen mit Deblector.

Wahrscheinlich nicht Ihre Zeit wert, aber Sie können auch pdb Symbole für eine Exe erstellen, aber wenn die Baugruppe viele Referenzen hat, wird es kompliziert. Ich habe vor ein paar Jahren einen Blogeintrag zusammengefügt, wie es geht: Disassembling .NET - Appendix A

0

Sie können die ausführbare Datei in csharp (vb.net) konvertieren.
Es gibt gute und kostenlose Werkzeug, .Ned Reflektor.

1

WinDbg kann verwendet werden, da es automatisch stoppt, wenn der Prozess initiiert wird. Es zeigt jedoch nur native Dinge an, es sei denn, Sie verwenden SOS.dll und verwaltete Debugging-Fähigkeiten. Es hat also eine scharfe Lernkurve.