Débogage sur Arm64
Cet article décrit le débogage Windows 10 sur les processeurs ARM. Pour obtenir des informations générales sur Windows 10 sur Arm, consultez Windows 10 bureau sur Arm64.
En général, les développeurs déboguant des applications en mode utilisateur doivent utiliser la version du débogueur qui correspond à l’architecture de l’application cible. Utilisez la version Arm64 de WinDbg pour déboguer des applications Arm64 en mode utilisateur et utilisez la version Arm de WinDbg pour déboguer des applications ARM32 en mode utilisateur. Utilisez la version x86 de WinDbg pour déboguer des applications x86 en mode utilisateur s’exécutant sur des processeurs Arm64.
Dans de rares cas où vous devez déboguer du code système, par exemple WOW64 ou CHPE, vous pouvez utiliser la version Arm64 de WinDbg. Si vous déboguez le noyau Arm64 à partir d’un autre ordinateur, utilisez la version de WinDbg qui correspond à l’architecture de cet autre ordinateur.
Obtention des outils de débogage Arm pour Windows
Vous pouvez obtenir des outils de débogage pour Arm64 en téléchargeant le SDK Windows (version 10.0.16299 ou ultérieure). Pendant l’installation, sélectionnez la zone Outils de débogage pour Windows .
Les outils de débogage se trouvent dans le Debuggers
dossier du répertoire d’installation du kit. Les outils x86 se trouvent sous Debuggers\x86
, les outils ARM32 sous Debuggers\Arm
et les outils Arm64 sous Debuggers\Arm64
.
Débogage du code Arm64
Arm64 WinDbg est nécessaire pour déboguer du code Arm64. L’expérience de débogage est similaire au débogage d’applications x86 avec x86 WinDbg sur Windows x86, à l’exception des différences suivantes.
- Il existe 32 registres à usage général : x0 à x28 et fp, lr, sp.
- Le registre du compteur de programmes, pc, n’est pas un registre à usage général.
- Tous les registres à usage général et les registres de pc ont une largeur de 64 bits.
- Au maximum deux points d’arrêt de données actifs pour l’exécution et deux points d’arrêt de données actifs pour la mémoire en lecture/écriture. Pour plus d’informations, consultez Points d’arrêt du processeur.
Débogage du code du mode utilisateur x86
Dans les rares cas où vous devez utiliser Arm64 WinDbg pour déboguer votre code en mode utilisateur x86, vous pouvez utiliser les commandes WinDbg suivantes pour basculer entre les contextes :
- .effmach x86 : basculez vers et voyez le contexte x86, en simulant l’effet de l’utilisation de x86 WinDbg.
- .effmach arm64 : basculer vers et voir le contexte Arm64
- .effmach chpe : basculez vers et consultez le contexte CHPE.
Pour plus d’informations sur .effmach, consultez .effmach (machine effective).
Lorsque vous déboguez des applications x86 en mode utilisateur, quelle que soit la version de WinDbg que vous utilisez, tenez compte de ces considérations.
- Si un thread n’est pas activement débogué (par exemple, en un seul pas, a rencontré un point d’arrêt), ne signale pas d’exception et n’est pas dans un appel système, le contexte d’inscription peut ne pas être à jour.
- L’émulateur génère en interne des données mal alignées, une instruction non conforme, des exceptions d’erreur d’E/S dans la page et gère celles qu’il génère. Lorsque vous utilisez WinDbg, envisagez de configurer ces exceptions comme ignorées sous les filtres de débogage/d’événements... .
- Si vous utilisez Arm64 WinDbg en mode utilisateur, l’exécution d’un seul pas à pas au-delà des limites de la fonction CHPE & x86 n’est pas prise en charge. Pour contourner ce problème, définissez des points d’arrêt sur le code cible.
Pour obtenir des informations générales sur ARM64 et WOW64, consultez Exécution d’applications 32 bits dans le Guide de programmation Windows 64 bits.
Pour plus d’informations sur le débogage d’applications s’exécutant sous WOW64, consultez Débogage de WOW64.
Débogage dans Visual Studio
Pour plus d’informations sur le débogage d’Arm dans Visual Studio, consultez Débogage à distance.