Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Niestandardowe debugery .NET są zwykle hostowane w osobnym procesie. Platformy mobilne ograniczają lub uniemożliwiają tworzenie takich procesów, dlatego niestandardowy składnik debugera po stronie docelowej musi zostać załadowany do procesu aplikacji.
Ten artykuł dotyczy tylko inicjowania debugera na platformach mobilnych (iOS i Android) w wersji .NET 11 i nowszych. Nie ma zastosowania do nativeAOT.
Implementowanie i wdrażanie składnika po stronie docelowej
Składnik debugera po stronie docelowej powinien zostać zaimplementowany jako biblioteka dynamiczna profilera z DllGetClassObject punktem wejścia. Przykładowe implementacje można znaleźć w przykładach profilera .NET.
Należy ją wdrożyć razem z bibliotekami dynamicznymi libmscordbi i libmscordaccore jako część aplikacji, zgodnie z wymaganiami docelowej platformy dotyczącymi pakietowania bibliotek natywnych, podpisywania kodu i ładowania.
Załaduj składnik po stronie docelowej podczas uruchamiania
Aby załadować składnik CoreCLR jako profiler, przed uruchomieniem środowiska należy podać następujące ustawienia środowiska:
| Zmienna środowiskowa | Value |
|---|---|
DOTNET_ENABLE_PROFILING |
1 |
DOTNET_PROFILER |
{<profiler-CLSID>} |
DOTNET_PROFILER_PATH |
<component-path> |
Zastąp element <profiler-CLSID> identyfikatorem GUID profilera składnika i zachowaj otaczające nawiasy klamrowe. Zastąp <component-path> ścieżką do składnika natywnego w pakiecie wdrożeniowym aplikacji docelowej.
Aby uzyskać szczegółowe informacje na temat tych ustawień, zobacz Opcje konfiguracji środowiska uruchomieniowego na potrzeby debugowania i profilowania.
Użyj konfiguracji uruchamiania aplikacji platformy, aby podać te ustawienia.
Note
Chociaż ta procedura wykorzystuje mechanizm profilera do inicjowania debugera, nie zapewnia ogólnej obsługi profilerów innych firm na platformach mobilnych.
Tworzenie interfejsu debugera
W komponencie docelowym przeprowadź następującą inicjalizację:
- Załaduj
libmscordbibibliotekę dynamiczną i wywołaj jegoCoreCLRCreateCordbObjectExeksport. Wyszukaj w zwróconym obiekcie elementICorDebug. - Wywołaj metodę ICorDebug::Initialize i zarejestruj program obsługi zdarzeń zarządzanych za pomocą metody ICorDebug::SetManagedHandler.
- Dołącz do aplikacji przy użyciu ICorDebug::DebugActiveProcess.
Aby nie przeoczyć zdarzeń wczesnego ładowania modułów i uruchamiania, należy skoordynować dołączanie z uruchamianiem środowiska wykonawczego, tak aby wykonywanie zarządzane nie rozpoczęło się przed zakończeniem DebugActiveProcess.
Po zainicjowaniu użyj interfejsów debugera ICorDebug, tak jak na innych platformach uniksowych.