8 Stimmen

Visual Studio: Wie debuggt man eine Bibliothek mit einer externen ausführbaren Datei?

Ich entwickle eine Klassenbibliothek. Die Bibliothek soll von einem anderen Programm verwendet werden, einer .exe ohne Quellcode. Der Speicherort der Bibliotheksdatei wird als Parameter an diese Exe übergeben, zum Beispiel durch Ausführen: prog.exe lib.dll

Ich möchte die Bibliothek mit dieser .exe debuggen (mit Debug-Tools wie Haltepunkte usw.) Wie verwende ich Visual C#, um dies zu tun?

Ich habe einen möglichen Weg gefunden, nämlich ein einzeiliges Programm zu erstellen, das Folgendes ausführt prog.exe lib.dll . Es gibt doch sicher einen besseren Weg?

3voto

Richard Punkte 103159

In den Debug-Optionen des Projekts wählen Sie "Externes Programm starten" und geben den Pfad der Exe ein. Beim Starten des Debuggens startet VS die Exe und verbindet sie mit dem Debugger.

Wenn Ihre Bibliothek geladen ist, werden alle Haltepunkte in Ihrem Code aktiviert.

Eine Einschränkung: Bei einem externen Programm sollten Sie darauf achten, dass es die von Ihnen erstellte DLL lädt. Es kann (bestenfalls) seltsam sein, wenn es eine andere Version lädt, die nicht mit dem Quellcode übereinstimmt.

1voto

Fredrik Mörk Punkte 151006

Wenn Sie bereits ein externes Programm haben, das Ihre Bibliothek verwendet (das dann auch eine .net-Anwendung ist, nehme ich an), können Sie dieses Programm starten und den Debugger an den Prozess anhängen ( Debuggen -> An den Prozess anhängen im Menü). Dann können Sie Haltepunkte im Code Ihrer Klassenbibliothek setzen und ihn debuggen. Vergewissern Sie sich, dass die Exe eine dll- und pdb-Datei verwendet, die mit Ihrem Code übereinstimmt (die neueste Version).

0voto

Soundararajan Punkte 1860
  1. Sie können wahrscheinlich versuchen, windbg. mit der sos-Erweiterung, ist es mearly möglich, alles, was Sie mit Visual Studio tun.
  2. Wenn Sie nur die Bibliothek debuggen wollen, warum können Sie diese Bibliothek nicht in eine von Ihnen erstellte Exe-Datei laden und in die Bibliothek einsteigen,

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X