Initiera ett anpassat felsökningsprogram på mobila plattformar

Anpassade .NET felsökningsprogram finns vanligtvis i en separat process. Mobila plattformar begränsar eller förbjuder att sådana processer skapas, så den anpassade felsökningskomponenten på målsidan måste i stället läsas in i programprocessen.

Den här artikeln gäller endast initiering av felsökningsprogram på mobila plattformar (iOS och Android) i .NET 11 och senare versioner. Det gäller inte nativeAOT.

Implementera och distribuera komponenten på målsidan

Felsökningskomponenten på målsidan ska implementeras som ett dynamiskt profilerarbibliotek med en DllGetClassObject startpunkt. Exempel på implementeringar finns i .NET profilerarexempel.

Den bör distribueras tillsammans med dynamiska bibliotek med libmscordbi och libmscordaccore som en del av programmet i enlighet med målplattformens interna bibliotekspaketering, kodsignering och inläsningskrav.

Läs in komponenten på målsidan vid start

Om du vill att CoreCLR ska läsa in komponenten som profilerare anger du följande miljöinställningar innan körningen startar:

Miljövariabel Value
DOTNET_ENABLE_PROFILING 1
DOTNET_PROFILER {<profiler-CLSID>}
DOTNET_PROFILER_PATH <component-path>

Ersätt <profiler-CLSID> med komponentens PROFILER-GUID och behåll de omslutande klammerparenteserna. Ersätt <component-path> med sökvägen till den inbyggda komponenten i målappens distribution.

Mer information om de här inställningarna finns i Körningskonfigurationsalternativ för felsökning och profilering.

Använd plattformens appstartskonfiguration för att ange de här inställningarna.

Note

Även om den här proceduren använder profileringsmekanismen för att initiera ett felsökningsprogram, etablerar den inte generellt stöd för profilerare från tredje part på mobila plattformar.

Skapa felsökningsgränssnittet

Utför följande initiering i målkomponenten:

  1. Läs in libmscordbi dynamiskt bibliotek och anropa dess CoreCLRCreateCordbObjectEx export. Fråga det returnerade objektet efter ICorDebug.
  2. Anropa ICorDebug::Initiera och registrera din hanterad händelsehanterare med ICorDebug::SetManagedHandler.
  3. Koppla till appen med ICorDebug::D ebugActiveProcess.

För att undvika att missa tidiga händelser vid modulinläsning och start bör du samordna anslutningen med körningsmiljöns start så att den hanterade körningen inte fortsätter innan DebugActiveProcess har slutförts.

Efter initieringen använder du felsökningsgränssnitten ICorDebug som på andra Unix-plattformar.