Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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:
- Laden Sie die dynamische Bibliothek
libmscordbiund rufen Sie ihre ExportfunktionCoreCLRCreateCordbObjectExauf. Abfrage des zurückgegebenen Objekts fürICorDebug. - Rufen Sie "ICorDebug::Initialize" auf, und registrieren Sie ihren Managed-Event-Handler bei ICorDebug::SetManagedHandler.
- 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.