Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les débogueurs de .NET personnalisés sont généralement hébergés dans un processus distinct. Les plateformes mobiles limitent ou interdisent la création de ces processus. Par conséquent, le composant de débogueur personnalisé côté cible doit être chargé dans le processus d’application.
Cet article s’applique uniquement à l’initialisation du débogueur sur les plateformes mobiles (iOS et Android) dans .NET 11 et versions ultérieures. Elle ne s’applique pas à NativeAOT.
Implémenter et déployer le composant côté cible
Le composant de débogage côté cible doit être implémenté sous la forme d’une bibliothèque dynamique de profileur avec un point d’entrée DllGetClassObject. Pour obtenir des exemples d’implémentation, consultez les exemples de profileur .NET.
Elle doit être déployée conjointement avec libmscordbi et bibliothèques dynamiques libmscordaccore dans le cadre de l’application en conformité avec l’empaquetage de bibliothèque native de la plateforme cible, la signature de code et les exigences de chargement.
Charger le composant côté cible au démarrage
Pour que CoreCLR charge votre composant en tant que profileur, fournissez les paramètres d’environnement suivants avant le démarrage du runtime :
| Variable d'environnement | Valeur |
|---|---|
DOTNET_ENABLE_PROFILING |
1 |
DOTNET_PROFILER |
{<profiler-CLSID>} |
DOTNET_PROFILER_PATH |
<component-path> |
Remplacez <profiler-CLSID> par le GUID du profileur de votre composant, et conservez les accolades qui l’entourent. Remplacez <component-path> par le chemin d’accès au composant natif dans le déploiement de l’application cible.
Pour plus d’informations sur ces paramètres, consultez les options de configuration du runtime pour le débogage et le profilage.
Utilisez la configuration de lancement d’application de votre plateforme pour fournir ces paramètres.
Note
Bien que cette procédure utilise le mécanisme du profileur pour initialiser un débogueur, elle n’établit pas de prise en charge générique des profileurs tiers sur les plateformes mobiles.
Créer l’interface du débogueur
Dans le composant côté cible, effectuez l’initialisation suivante :
- Chargez
libmscordbila bibliothèque dynamique et appelez son exportCoreCLRCreateCordbObjectEx. Interrogez l’objet retourné pourICorDebug. - Appelez ICorDebug ::Initialize et inscrivez votre gestionnaire d’événements managés auprès d’ICorDebug ::SetManagedHandler.
- Attachez-vous à l’application avec ICorDebug::DebugActiveProcess.
Pour éviter de manquer les événements précoces de chargement du module et de démarrage, coordonnez l’opération d’attachement avec le démarrage de l’environnement d’exécution afin que l’exécution managée ne se poursuive pas avant la fin de DebugActiveProcess.
Après l’initialisation, utilisez les ICorDebug interfaces du débogueur comme sur d’autres plateformes Unix.