Exemplarische Vorgehensweise: Debuggen einer Projektmappe, die sowohl verwalteten als auch systemeigenen Code enthält
Aktualisiert: November 2007
Diese exemplarische Vorgehensweise enthält Schritte für das Debuggen einer Projektmappe, die sowohl systemeigene als auch verwaltete Komponenten (.NET Compact Framework-Komponenten) enthält. Visual Studio bietet keine Unterstützung für das Interop-Debuggen von Geräteanwendungen als solche. Das bedeutet, dass der systemeigene und der verwaltete Debugger nicht gleichzeitig angefügt werden können.
Zum Debuggen einer Projektmappe, die sowohl systemeigene als auch verwaltete Elemente enthält, besteht die empfohlene Technik darin, den für einen bestimmten Abschnitt erforderlichen Debugger anzufügen. Bei einem verwalteten Abschnitt muss dieser Debugger beispielsweise abgetrennt und der andere angefügt werden, sobald er erforderlich wird. Sie können diese Schritte des Abtrennens/Anfügens bis zum Ende des Programms so oft wie nötig wiederholen.
Hinweis: |
---|
Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen. |
Diese exemplarische Vorgehensweise wurde mithilfe von Visual C#-Entwicklungseinstellungen geschrieben. Sie enthält die folgenden Abschnitte:
Aktivieren des Anfügens des verwalteten Debuggers
Starten der Anwendung
Festlegen eines Haltepunkts im systemeigenen Code
Anfügen mit dem systemeigenen Debugger
Ausführen bis zum systemeigenen Haltepunkt
Anfügen mit dem verwalteten Debugger
Festlegen eines Haltepunkts im verwalteten Code
Ausführen bis zum verwalteten Haltepunkt
Schlussfolgerung
Vorbereitungsmaßnahmen
In dieser exemplarischen Vorgehensweise wird die mit einer anderen exemplarischen Vorgehensweise (Exemplarische Vorgehensweise: Hello World: Ein COM-Interop-Beispiel für intelligente Geräte) erstellte Projektmappe verwendet. Stellen Sie sicher, dass diese exemplarische Vorgehensweise erstellt und ausgeführt wurde.
Aktivieren des Anfügens des verwalteten Debuggers
Standardmäßig kann sich bei Geräten (einschließlich Emulatoren) der verwaltete Debugger nicht an bereits ausgeführte Prozesse anfügen. Der verwaltete Debugger wird i. d. R. bei Gerätelösungen, die sowohl verwalteten als auch systemeigenen Code enthalten, an einen bereits ausgeführten Prozess angefügt.
Im ersten Schritt richten Sie das Gerät so ein, dass der verwaltete Debugger an einen bereits ausgeführten Prozess angefügt werden kann. Legen Sie hierzu für das Gerät einen Registrierungsschlüssel fest.
Hinweis: |
---|
Mit dem Festlegen des Schlüssels wird nur das Anfügen an einen bereits ausgeführten verwalteten Prozess beeinflusst. Das Starten eines Projekts mithilfe von Starten mit Debuggen (F5) wird nicht beeinflusst. Wenn Sie jedoch nach Mit Debuggen starten einen Prozess abtrennen, müssen Sie diesen Prozess wieder anfügen und das Debuggen erneut beginnen. |
So können Sie den verwalteten Debugger aktivieren und an einen laufenden Prozess anfügen
Zeigen Sie im Menü Start von Windows auf Alle Programme, auf Microsoft Visual Studio 2008 und auf Visual Studio Remote Tools, und klicken Sie dann auf Remote Registry Editor.
Erweitern Sie im Fenster Windows CE-Gerät auswählen die Option Windows Mobile 5.0 Pocket PC SDK, und klicken Sie auf Windows Mobile 5.0 Pocket PC Emulator. Dies ist das Zielgerät für diese exemplarische Vorgehensweise.
Klicken Sie auf OK.
Das Fenster Mit Gerät verbinden, in dem der Arbeitsfortschritt angezeigt wird, wird geöffnet. Danach werden der Geräteemulator und anschließend Windows CE Remote Registry Editor geöffnet.
Erweitern Sie im Registrierungs-Editor Windows Mobile 5.0 Pocket PC Emulator, und erstellen Sie dann den folgenden Schlüssel: HKEY_LOCAL_MACHINE\SOFTWARE\Microsot\.NETCompactFramework\Managed Debugger.
Zum Erstellen des Schlüssels klicken Sie mit der rechten Maustaste auf .NETCompactFramework, zeigen Sie auf Neu, und klicken Sie dann auf Schlüssel.
Beachten Sie, dass ein Leerzeichen zwischen "Managed" und "Debugger" steht.
Erstellen Sie das DWORD AttachEnabled.
Zum Erstellen von DWORD klicken Sie mit der rechten Maustaste auf Verwalteter Debugger, zeigen Sie auf Neu, und klicken Sie dann auf DWORD-Wert.
Legen Sie Name auf AttachEnabled und Wert auf 1 fest.
Hinweis: Das Festlegen dieses Schlüssels zum Debuggen des Geräts führt zu erheblichen Leistungseinbußen. Wenn Sie nicht debuggen, deaktivieren Sie diese Funktionen, indem Sie den Datenwert auf 0 (null) zurücksetzen.
Lassen Sie den Geräteemulator geöffnet, damit die Registrierungseinstellung für die übrigen Schritte beibehalten wird. Sie können den Registrierungs-Editor schließen.
Starten der Anwendung
Im nächsten Schritt starten Sie die InteropSolution-Anwendung.
So starten Sie die Anwendung
Öffnen Sie die in Exemplarische Vorgehensweise: Hello World: Ein COM-Interop-Beispiel für intelligente Geräte erstellte Projektmappe.
Stellen Sie sicher, dass auf der Symbolleiste im Feld Zielgerät die Option Windows Mobile 5.0 Pocket PC Emulator angezeigt wird.
Klicken Sie in Visual Studio im Menü Debuggen auf Debuggen starten, oder drücken Sie F5.
Durch diesen Schritt wird das systemeigene Projekt HelloCOMObject für den Emulator ohne weiteren Benutzereingriff direkt bereitgestellt.
Nach dem Öffnen des Dialogfelds SayHello bereitstellen, wählen Sie Windows Mobile 5.0 Pocket PC Emulator aus und klicken auf Bereitstellen.
In diesem Schritt wird das verwaltete Projekt bereitgestellt.
Die Anwendung wird im Emulator geöffnet. Klicken Sie noch nicht auf die Schaltfläche.
Festlegen eines Haltepunkts im systemeigenen Code
Im nächsten Schritt legen Sie einen Haltepunkt im systemeigenen Code fest, um das Anfügen des systemeigenen Debuggers vorzubereiten.
So legen Sie einen Haltepunkt im systemeigenen Code fest
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Hello.cpp, und wählen Sie Code anzeigen.
Fügen Sie einen Haltepunkt bei der Zeile ein, die mit *text beginnt, indem Sie auf den linken Rand des Code-Editors klicken.
Das Symbol für den Haltepunkt wird als leerer Kreis mit Ausrufezeichen angezeigt und gibt an, dass der Haltepunkt derzeit nicht aufgelöst werden kann. Das liegt daran, dass ihm derzeit keine geeigneten Symbole und Quellen zugeordnet sind.
Zeigen Sie in Visual Studio im Menü Debuggen auf Windows, und klicken Sie dann auf Module.
Im Fenster Module werden alle zu diesem Zeitpunkt geladenen Module angezeigt, z. B. die verwaltete Anwendung SayHello.exe. Beachten Sie, dass die systemeigene HelloCOMObject.dll noch nicht geladen wurde, da Sie noch nicht auf die Schaltfläche in der Anwendung geklickt haben.
Anfügen mit dem systemeigenen Debugger
Im nächsten Schritt trennen Sie den verwalteten Debugger ab, sodass Sie den systemeigenen Debugger anfügen können. Denken Sie daran, dass beide Debugger nicht zur gleichen Zeit für Geräteprojekte angefügt werden können. Mit diesen Schritten können Sie jederzeit vom verwalteten zum systemeigenen Debugger wechseln.
So fügen Sie den systemeigenen Debugger an
Klicken Sie in Visual Studio im Menü Debuggen auf Alle trennen.
In diesem Schritt wird der verwaltete Debugger abgetrennt, die Anwendung kann jedoch weiter ausgeführt werden.
Klicken Sie im Menü Debuggen auf An den Prozess anhängen.
Klicken Sie im Feld Transport auf Intelligentes Gerät.
Klicken Sie zum Füllen des Felds Qualifizierer auf Durchsuchen.
Das Dialogfeld Mit Gerät verbinden wird angezeigt. Wählen Sie Windows Mobile 5.0 Pocket PC Emulator aus, und klicken Sie auf Verbinden.
Klicken Sie zum Füllen des Felds Anfügen an auf Auswählen.
Im Dialogfeld Codetyp auswählen wählen Sie Diese Codetypen debuggen aus, deaktivieren Sie das Kontrollkästchen Verwaltet, aktivieren Sie das Kontrollkästchen Systemeigen, und klicken Sie dann auf OK.
Im Feld Verfügbare Prozesse wählen Sie SayHello.exe aus, und klicken Sie dann auf Anfügen.
Der systemeigene Debugger wurde angefügt.
Ausführen bis zum systemeigenen Haltepunkt
Sie können jetzt zu dem Haltepunkt wechseln, den Sie im systemeigenen Code festgelegt haben. Im Fenster Module werden jetzt die systemeigenen Module angezeigt. HelloCOMObject.dll wurde allerdings noch nicht geladen, da Sie noch nicht auf button1 geklickt haben.
Hinweis: |
---|
Wenn Sie diese exemplarische Vorgehensweise bereits früher ausgeführt haben, sind die Debugsymbole möglicherweise schon geladen. Sie können diese Schritte dann überspringen. Andernfalls finden Sie im folgenden Abschnitt die Schritte zum Laden dieser Symbole. |
So setzen Sie das Ausführen bis zum systemeigenen Haltepunkt fort
Klicken Sie im Geräteemulatorformular auf button1.
Die Hello World!-Meldung wird im Formular angezeigt, und hellocomobject.dll wird im Fenster Module angezeigt.
Wenn in der Spalte Symbolstatus für hellocomobject.dll nicht der Text Symbole geladen angezeigt wird, führen Sie folgende Schritte aus:
Klicken Sie mit der rechten Maustaste auf hellocomobject.dll, und klicken Sie dann auf Symbole laden.
Navigieren Sie im Dialogfeld Symbole suchen zu InteropSolution\HelloCOMObject\Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\Debug\HelloCOMObject.pdb.
Klicken Sie auf Öffnen.
Die Anzeige in der Spalte Symbolstatus ändert sich in Symbole geladen. Der Indikator für den Haltepunkt zeigt nun den Haltepunkt als aufgelöst an.
Klicken Sie im Formular im Geräteemulator im Fenster Hello World! auf OK, und klicken Sie dann auf button1.
Der Haltepunktindikator zeigt an, dass die Ausführung am Haltepunkt angehalten wurde.
Klicken Sie im Menü Debuggen auf Einzelschritt, oder drücken Sie F11.
Beachten Sie, dass die Ausführung in die nächste Zeile springt. Dies weist darauf hin, dass Sie jetzt den systemeigenen Abschnitt der Projektmappe schrittweise durchlaufen können.
Anfügen mit dem verwalteten Debugger
Im nächsten Schritt trennen Sie den systemeigenen Debugger ab, sodass Sie den verwalteten Debugger anfügen können. Denken Sie daran, dass beide Debugger nicht zur gleichen Zeit für Geräteprojekte angefügt werden können. Mit diesen Schritten können Sie jederzeit vom systemeigenen zum verwalteten Debugger wechseln.
So fügen Sie den verwalteten Debugger an
Klicken Sie in Visual Studio im Menü Debuggen auf Alle trennen.
In diesem Schritt wird der systemeigene Debugger abgetrennt, die Anwendung aber weiter ausgeführt.
Klicken Sie im Menü Debuggen auf An den Prozess anfügen, und stellen Sie sicher, dass Intelligentes Gerät im Feld Transport angezeigt wird.
Füllen Sie das Feld Qualifizierer aus, indem Sie auf Auswählen klicken, wählen Sie dann Windows Mobile 5.0 Pocket PC Emulator aus, und klicken Sie anschließend auf Verbinden.
Um das Feld Anfügen an auszufüllen, klicken Sie auf Auswählen, wählen Sie dann Diese Codetypen debuggen aus, aktivieren Sie das Feld Verwaltet, deaktivieren Sie das Feld Systemeigen, und klicken Sie dann auf OK.
Wenn eine Meldung angezeigt wird, in der Sie darauf aufmerksam gemacht werden, dass verwaltetes und systemeigenes Debuggen nicht kompatibel sind, klicken Sie auf OK.
Im Feld Verfügbare Prozesse wählen Sie SayHello.exe aus, und klicken Sie dann auf Anfügen.
Der verwaltete Debugger wird angefügt.
Festlegen eines Haltepunkts im verwalteten Code
Im nächsten Schritt legen Sie einen Haltepunkt im verwalteten Code fest, um das Anfügen des verwalteten Debuggers vorzubereiten.
So legen Sie einen Haltepunkt im verwalteten Code fest
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Form1.cs, und klicken Sie dann auf Code anzeigen.
Fügen Sie in der Zeile string text; einen Haltepunkt ein.
Ausführen bis zum verwalteten Haltepunkt
Sie können jetzt zu dem Haltepunkt wechseln, den Sie im verwalteten Code festgelegt haben.
So setzen Sie die Ausführung bis zum verwalteten Haltepunkt fort
Klicken Sie im Geräteemulator auf button1.
Die Ausführung hält am Haltepunkt an.
Schlussfolgerung
Setzen Sie zum Optimieren der Leistung den Geräteregistrierungsschlüssel auf 0 (null) zurück, wenn der verwaltete Debugger nicht mehr an einen bereits ausgeführten Prozess angefügt werden muss.
Siehe auch
Aufgaben
Gewusst wie: Anfügen an verwaltete Geräteprozesse
Gewusst wie: Ändern der Geräteregistrierungseinstellungen