Initialisieren eines benutzerdefinierten Debuggers auf mobilen Plattformen

Benutzerdefinierte .NET Debugger werden in der Regel in einem separaten Prozess gehostet. Mobile Plattformen beschränken oder verbieten das Erstellen solcher Prozesse, sodass die zielseitige benutzerdefinierte Debuggerkomponente stattdessen in den Anwendungsprozess geladen werden muss.

Dieser Artikel gilt nur für die Debuggerinitialisierung auf mobilen Plattformen (iOS und Android) in .NET 11 und höheren Versionen. Es gilt nicht für NativeAOT.

Implementieren und Bereitstellen der zielseitigen Komponente

Die zielseitige Debuggerkomponente sollte als dynamische Profilerbibliothek mit einem DllGetClassObject Einstiegspunkt implementiert werden. Beispiele für Implementierungen finden Sie in den .NET Profilerbeispielen.

Es sollte zusammen mit den dynamischen Bibliotheken libmscordbi und libmscordaccore als Teil der Anwendung gemäß den für die Zielplattform nativen Anforderungen an die Paketierung nativer Bibliotheken, die Code-Signierung und das Laden bereitgestellt werden.

Laden der zielseitigen Komponente beim Start

Damit CoreCLR Ihre Komponente als Profiler lädt, geben Sie die folgenden Umgebungseinstellungen an, bevor die Laufzeit gestartet wird:

Umgebungsvariable Wert
DOTNET_ENABLE_PROFILING 1
DOTNET_PROFILER {<profiler-CLSID>}
DOTNET_PROFILER_PATH <component-path>

Ersetzen Sie <profiler-CLSID> durch die Profiler-GUID Ihrer Komponente, und behalten Sie die umgebenden geschweiften Klammern bei. Ersetzen Sie <component-path> durch den Pfad zur nativen Komponente in der Bereitstellung der Ziel-App.

Ausführliche Informationen zu diesen Einstellungen finden Sie unter Laufzeitkonfigurationsoptionen zum Debuggen und Profilieren.

Verwenden Sie die App-Startkonfiguration Ihrer Plattform, um diese Einstellungen bereitstellen zu können.

Note

Während dieses Verfahren den Profilermechanismus zum Initialisieren eines Debuggers verwendet, wird keine allgemeine Unterstützung für Profilierer von Drittanbietern auf mobilen Plattformen eingerichtet.

Erstellen der Debuggerschnittstelle

Führen Sie in der zielseitigen Komponente die folgende Initialisierung aus:

  1. Laden Sie die dynamische Bibliothek libmscordbi und rufen Sie ihre Exportfunktion CoreCLRCreateCordbObjectEx auf. Abfrage des zurückgegebenen Objekts für ICorDebug.
  2. Rufen Sie "ICorDebug::Initialize" auf, und registrieren Sie ihren Managed-Event-Handler bei ICorDebug::SetManagedHandler.
  3. Stellen Sie mit ICorDebug::DebugActiveProcess eine Verbindung mit der App her.

Um zu vermeiden, dass frühe Modullade- und Startereignisse verpasst werden, koordinieren Sie das Anfügen mit dem Laufzeitstart, sodass die verwaltete Ausführung nicht fortgesetzt wird, bevor DebugActiveProcess abgeschlossen ist.

Verwenden Sie nach der Initialisierung die ICorDebug Debuggerschnittstellen wie auf anderen Unix-Plattformen.