Depuración en Arm64

En este artículo se describe la depuración Windows 10 en procesadores ARM. Para obtener información general sobre Windows 10 en Arm, consulte Windows 10 escritorio en Arm64.

En general, los desarrolladores que depuran aplicaciones en modo de usuario deben usar la versión del depurador que coincida con la arquitectura de la aplicación de destino. Use la versión arm64 de WinDbg para depurar aplicaciones arm64 en modo de usuario y usar la versión arm de WinDbg para depurar aplicaciones ARM32 en modo de usuario. Use la versión x86 de WinDbg para depurar aplicaciones de modo de usuario x86 que se ejecutan en procesadores Arm64.

En casos poco frecuentes en los que necesita depurar código del sistema , como WOW64 o CHPE, puede usar la versión arm64 de WinDbg. Si está depurando el kernel de Arm64 desde otra máquina, use la versión de WinDbg que coincida con la arquitectura de ese otro equipo.

Obtención de herramientas de depuración de Arm para Windows

Puede obtener herramientas de depuración para Arm64 descargando windows SDK (versión 10.0.16299 o posterior). Durante la instalación, seleccione el cuadro Herramientas de depuración para Windows .

Las herramientas de depuración se encuentran en la Debuggers carpeta del directorio de instalación del kit. Las herramientas x86 están en Debuggers\x86, las herramientas de ARM32 se encuentran en Debuggers\Army las herramientas de Arm64 están en Debuggers\Arm64.

Depuración de código arm64

Se requiere Arm64 WinDbg para depurar código arm64. La experiencia de depuración es similar a la depuración de aplicaciones x86 con x86 WinDbg en Windows x86, excepto las siguientes diferencias.

  • Hay 32 registros de uso general: x0 a x28 y fp, lr, sp.
  • Registro del contador del programa, pc, no es un registro de uso general.
  • Todos los registros de uso general y el registro de pc tienen un ancho de 64 bits.
  • Como máximo, dos puntos de interrupción de datos activos para la ejecución y dos puntos de interrupción de datos activos para la memoria de lectura y escritura. Para obtener más información, consulte Puntos de interrupción del procesador.

Depuración del código del modo de usuario x86

En los casos excepcionales que necesita usar Arm64 WinDbg para depurar el código del modo de usuario x86, puede usar los siguientes comandos de WinDbg para cambiar entre contextos:

  • .effmach x86: cambie al contexto x86 y vea el contexto x86, simulando el efecto de usar x86 WinDbg.
  • .effmach arm64: cambiar a y ver el contexto de Arm64
  • .effmach chpe: cambie a y vea el contexto CHPE.

Para obtener más información sobre .effmach, vea .effmach (Effective Machine).

Al depurar aplicaciones x86 en modo de usuario, independientemente de la versión de WinDbg que use, tenga en cuenta estas consideraciones.

  • Si un subproceso no se está depurando activamente (por ejemplo, un solo paso, encontró un punto de interrupción), no notifica una excepción y no en una llamada del sistema, es posible que el contexto de registro no esté actualizado.
  • El emulador genera internamente las excepciones de error de E/S de datos no alineadas, no válidas, y controla las que genera. Cuando use WinDbg, considere la posibilidad de configurar estas excepciones como Ignored en Debug /Event Filters... .
  • Si usa Arm64 WinDbg en modo de usuario, no se admiten los límites de la función CHPE de x86 paso a paso por paso a través de x8 & 6. Para solucionarlo, establezca puntos de interrupción en el código de destino.

Para obtener información general sobre ARM64 y WOW64, consulte Ejecución de aplicaciones de 32 bits en la guía de programación de Windows de 64 bits.

Para obtener información sobre la depuración de aplicaciones que se ejecutan en WOW64, consulte Depuración de WOW64.

Depuración en Visual Studio

Para obtener información sobre la depuración de Arm en Visual Studio, vea Depuración remota.

Consulte también