Debuggen von DLL-Projekten
Aktualisiert: November 2007
Dieses Thema gilt für folgende Anwendungsbereiche:
Edition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
||||
Standard |
||||
Pro und Team |
Tabellenlegende:
Vorhanden |
|
Nicht vorhanden |
|
Befehl oder Befehle, die standardmäßig ausgeblendet sind. |
Die folgenden Vorlagen erstellen DLLs:
(C++, C# und Visual Basic): Klassenbibliothek
(C++, C# und Visual Basic): Windows Forms-Steuerelementbibliothek
Das Debuggen einer Windows-Steuerelementbibliothek entspricht weitgehend dem Debuggen eines Klassenbibliotheksprojekts. In den meisten Fällen wird das Windows-Steuerelement über ein anderes Projekt aufgerufen. Beim Debuggen des aufrufenden Projekts können Sie in den Code des Windows-Steuerelements springen, Haltepunkte festlegen und andere Debugoperationen ausführen. Weitere Informationen finden Sie unter Steuerelemente für Windows Forms.
(C# und Visual Basic): Websteuerelementbibliothek
Weitere Informationen finden Sie unter Websteuerelementbibliothek (verwalteter Code).
(C++): MFC-ActiveX-Steuerelement und MFC-ActiveX-Steuerelement für intelligente Geräte
ActiveX-Steuerelemente können über das Internet auf einen Clientcomputer heruntergeladen sowie auf Webseiten angezeigt und aktiviert werden.
Das Debuggen von ActiveX-Steuerelementen ist mit dem Debuggen anderer Steuerelemente vergleichbar: Beide können nicht eigenständig ausgeführt werden, sondern müssen in eine HTML-Webseite eingebettet sein. Weitere Informationen finden Sie unter Gewusst wie: Debuggen von ActiveX-Steuerelementen.
(C++): MFC-DLL für intelligente Geräte
Weitere Informationen finden Sie unter MFC-Debugverfahren.
Dieser Abschnitt enthält außerdem Informationen über die folgenden Themen:
Dieses Thema enthält folgende Abschnitte mit Hinweisen dazu, wie Sie das Debuggen von Klassenbibliotheken vorbereiten:
Erstellen einer Debugversion
Debuggen im gemischten Modus
Ändern von Standardkonfigurationen
Möglichkeiten zum Debuggen einer DLL
Die aufrufende Anwendung
Steuerelemente auf einer Webseite
Das "Direktfenster"
Erstellen einer Debugversion
Unabhängig davon, wie Sie die Debugsitzung starten, sollten Sie darauf achten, zuerst die Debugversion der DLL zu erstellen, und anschließend sicherstellen, dass die Debugversion an dem Speicherort abgelegt ist, an dem sie von der Anwendung gesucht wird. Dies scheint zwar auf der Hand zu liegen, kann aber, wenn Sie diesen Schritt auslassen, dazu führen, dass die Anwendung eine andere Version der DLL findet und lädt. Das Programm wird dann weiter ausgeführt, während Sie sich fragen, warum der Haltepunkt nicht getroffen wurde. Sie können die vom Programm geladenen DLLs beim Debuggen überprüfen, indem Sie im Debugger das Fenster Module öffnen. Im Fenster Module werden alle DLL- und EXE-Dateien aufgelistet, die im gedebuggten Prozess geladen sind. Weitere Informationen finden Sie unter Gewusst wie: Verwenden des Fensters "Module".
Damit der Debugger an C++-Code angefügt werden kann, muss der Code DebuggableAttribute ausgeben. Sie können dieses Attribut automatisch in den Code einfügen, indem Sie eine Verknüpfung über die /ASSEMBLYDEBUG-Linkeroption herstellen.
Debuggen im gemischten Modus
Die aufrufende Anwendung (d. h. die Anwendung, durch die die DLL aufgerufen wird) kann in verwaltetem oder systemeigenem Code geschrieben sein. Wenn eine verwaltete DLL von systemeigenem Code aufgerufen wird und Sie beide debuggen möchten, müssen Sie sowohl den verwalteten als auch den systemeigenen Debugger aktivieren. Sie können dies im Dialogfeld bzw. Fenster <Projekt>-Eigenschaftenseiten auswählen. Wie Sie dabei vorgehen, hängt davon ab, ob Sie den Debugvorgang über das DLL-Projekt oder über das Projekt für die aufrufende Anwendung starten. Weitere Informationen finden Sie unter Gewusst wie: Debuggen im gemischten Modus.
Ändern von Standardkonfigurationen
Wenn Sie ein Konsolenanwendungsprojekt mit einer Projektvorlage erstellen, werden die erforderlichen Einstellungen für die Debugkonfiguration und die Releasekonfiguration automatisch durch Visual Studio festgelegt. Diese Einstellungen können ggf. geändert werden. Weitere Informationen finden Sie unter Projekteinstellungen für eine C++-Debugkonfiguration, Projekteinstellungen für C#-Debugkonfigurationen, Projekteinstellungen für eine Visual Basic-Debugkonfiguration und Gewusst wie: Festlegen von Debug- und Releasekonfigurationen.
Möglichkeiten zum Debuggen einer DLL
Jedes Projekt in diesem Abschnitt erstellt eine DLL. Eine DLL kann nicht direkt ausgeführt werden, sondern muss von einer Anwendung (normalerweise einer EXE-Datei) aufgerufen werden. Weitere Informationen finden Sie unter Erstellen und Verwalten von Visual C++-Projekten. Die aufrufende Anwendung kann einem der folgenden Kriterien entsprechen:
Eine Anwendung, die in einem anderen Projekt in derselben Visual Studio-Projektmappe erstellt wurde, in der die Klassenbibliothek enthalten ist.
Eine vorhandene Anwendung, die bereits auf einem Test- oder Produktionscomputer bereitgestellt wurde.
Eine Anwendung im Web, auf die über eine URL zugegriffen wird.
Eine Webanwendung mit einer Webseite, in die die DLL eingebettet ist.
Debuggen der aufrufenden Anwendung
Um eine DLL zu debuggen, beginnen Sie mit dem Debuggen der aufrufenden Anwendung. Dies ist für gewöhnlich entweder eine EXE-Datei oder eine Webanwendung. Für das Debuggen haben Sie verschiedene Möglichkeiten.
Falls ein Projekt für die aufrufende Anwendung vorhanden ist, öffnen Sie das Projekt, und starten Sie die Ausführung über das Menü Debuggen. Weitere Informationen finden Sie unter Gewusst wie: Starten der Ausführung.
Wenn es sich bei der aufrufenden Anwendung um ein vorhandenes Programm handelt, das bereits auf einem Test- oder Produktionscomputer bereitgestellt ist, können Sie den Debugger an die Anwendung anfügen. Verwenden Sie diese Methode, wenn es sich bei der DLL um ein von Internet Explorer gehostetes Steuerelement oder um ein Steuerelement auf einer Webseite handelt. Weitere Informationen finden Sie unter Gewusst wie: Anfügen an einen laufenden Prozess.
Sie können über das DLL-Projekt debuggen. Weitere Informationen finden Sie unter Gewusst wie: Debuggen über ein DLL-Projekt.
Sie können in Visual Studio über das Direktfenster debuggen. In diesem Fall übernimmt das Direktfenster die Funktion der Anwendung.
Bevor Sie mit dem Debuggen der aufrufenden Anwendung beginnen, werden Sie gewöhnlich einen Haltepunkt in der Klassenbibliothek festlegen. Weitere Informationen finden Sie unter Haltepunkte und Ablaufverfolgungspunkte. Sobald der Haltepunkt getroffen wird, können Sie den Code schrittweise ausführen und die in den einzelnen Zeilen ausgeführten Aktionen beobachten, bis Sie das Problem eingegrenzt haben. Weitere Informationen finden Sie unter Übersicht über das schrittweise Ausführen von Code.
Steuerelemente auf einer Webseite
Um ein Webseitensteuerelement zu debuggen, erstellen Sie – falls nicht bereits vorhanden – eine ASP.NET-Seite, in die das Webseitensteuerelement eingebettet wird. Legen Sie anschließend Haltepunkte im Webseitencode und im Steuerelementcode fest. Rufen Sie anschließend die Webseite mit Visual Studio auf.
Bevor Sie mit dem Debuggen der aufrufenden Anwendung beginnen, werden Sie gewöhnlich einen Haltepunkt in der DLL festlegen. Sobald der Haltepunkt getroffen wird, können Sie den Code schrittweise ausführen und die in den einzelnen Zeilen ausgeführten Aktionen beobachten, bis Sie das Problem eingegrenzt haben. Weitere Informationen finden Sie unter Haltepunkte und Ablaufverfolgungspunkte und Übersicht über das schrittweise Ausführen von Code.
Das "Direktfenster"
Sie können Funktionen oder Methoden in der DLL auswerten, ohne dass Sie über eine aufrufende Anwendung verfügen müssen. Sie verwenden dazu das Entwurfszeitdebuggen und das Direktfenster. Um auf diese Weise zu debuggen, führen Sie folgende Schritte aus, während das DLL-Projekt geöffnet ist:
Öffnen Sie das Direktfenster des Debuggers.
Um eine Methode mit dem Namen Test in der Class1-Klasse zu testen, instanziieren Sie ein Objekt vom Typ Class1, indem Sie den folgenden C#-Code im Direktfenster eingeben. Dieser verwaltete Code kann mit den entsprechenden Syntaxänderungen in Visual Basic und C++ eingesetzt werden:
Class1 obj = new Class1();
In C# müssen alle Namen vollqualifiziert sein. Außerdem müssen sich alle Methoden und Variablen im aktuellen Gültigkeitsbereich und Kontext der Debugsitzung befinden.
Vorausgesetzt, dass Test einen int-Parameter annimmt, werten Sie Test mit dem Direktfenster aus:
?obj.Test(10)
Das Ergebnis wird im Direktfenster ausgegeben.
Sie können mit dem Debuggen von Test fortfahren, indem Sie einen Haltepunkt einfügen und anschließend die Funktion erneut auswerten:
?obj.Test(10);
Sobald der Haltepunkt erreicht ist, können Sie Test in Einzelschritten ausführen. Nach der Ausführung von Test befindet sich der Debugger wieder im Entwurfsmodus.
Siehe auch
Konzepte
Projekteinstellungen für C#-Debugkonfigurationen
Projekteinstellungen für eine Visual Basic-Debugkonfiguration
Referenz
Projekteinstellungen für eine C++-Debugkonfiguration
Weitere Ressourcen
Vorbereitung zum Debuggen: Visual C++-Projekttypen
Vorbereitung zum Debugging: C#- und Visual Basic-Projekttypen