Depuração no Arm64

Este artigo descreve a depuração de Windows 10 em processadores ARM. Para obter informações gerais sobre Windows 10 no Arm, consulte Windows 10 área de trabalho no Arm64.

Em geral, os desenvolvedores que depuram aplicativos de modo de usuário devem usar a versão do depurador que corresponde à arquitetura do aplicativo de destino. Use a versão Arm64 do WinDbg para depurar aplicativos Arm64 no modo de usuário e use a versão arm do WinDbg para depurar aplicativos ARM32 no modo de usuário. Use a versão x86 do WinDbg para depurar aplicativos x86 do modo de usuário em execução em processadores Arm64.

Em casos raros em que você precisa depurar o código do sistema – como WOW64 ou CHPE – você pode usar a versão Arm64 do WinDbg. Se você estiver depurando o kernel arm64 de outro computador, use a versão do WinDbg que corresponde à arquitetura desse outro computador.

Obtendo ferramentas de depuração do Arm para Windows

Você pode obter ferramentas de depuração para Arm64 baixando o SDK do Windows (versão 10.0.16299 ou posterior). Durante a instalação, selecione a caixa Ferramentas de Depuração para Windows .

As ferramentas de depuração estão localizadas na Debuggers pasta no diretório de instalação do kit. As ferramentas x86 estão em Debuggers\x86, as ferramentas ARM32 estão em Debuggers\Arme as ferramentas arm64 estão em Debuggers\Arm64.

Depurando código Arm64

Arm64 WinDbg é necessário para depurar o código Arm64. A experiência de depuração é semelhante à depuração de aplicativos x86 com WinDbg x86 no Windows x86, exceto pelas seguintes diferenças.

  • Há 32 registros de uso geral – x0 a x28 e fp, lr, sp.
  • O registro do contador de programas, computador, não é um registro de finalidade geral.
  • Todos os registros de uso geral e o registro do computador têm largura de 64 bits.
  • No máximo dois pontos de interrupção de dados ativos para execução e dois pontos de interrupção de dados ativos para memória de leitura/gravação. Para obter mais informações, consulte Pontos de interrupção do processador.

Depurando código do modo de usuário x86

Nos casos raros em que você precisa usar o WinDbg do Arm64 para depurar o código do modo de usuário x86, você pode usar os seguintes comandos WinDbg para alternar entre contextos:

  • .effmach x86: alterne para e veja o contexto x86, simulando o efeito de usar o WinDbg x86.
  • .effmach arm64: alternar para e ver o contexto do Arm64
  • .effmach chpe: alterne para e veja o contexto chpe.

Para obter mais informações sobre o .effmach, consulte .effmach (Máquina Efetiva).

Ao depurar aplicativos x86 no modo de usuário, independentemente de qual versão do WinDbg você está usando, esteja ciente dessas considerações.

  • Se um thread não estiver sendo depurado ativamente (por exemplo, de um único passo, encontrou um ponto de interrupção), não está relatando uma exceção e não em uma chamada do sistema, o contexto de registro pode não estar atualizado.
  • O emulador gera internamente dados desalinhados, instruções ilegais, exceções de erro de E/S na página e manipula os gerados. Ao usar o WinDbg, considere configurar essas exceções como Ignoradas nos Filtros de Eventos/Depuração... .
  • Se estiver usando o WinDbg do Arm64 no modo de usuário, não há suporte para o passo a passo único entre limites de função x86 & CHPE. Para contornar isso, defina pontos de interrupção no código de destino.

Para obter informações gerais sobre ARM64 e WOW64, consulte Executando aplicativos de 32 bits no guia de programação do Windows de 64 bits.

Para obter informações sobre como depurar aplicativos em execução em WOW64, consulte Depurando WOW64.

Depurando no Visual Studio

Para obter informações sobre como depurar o Arm no Visual Studio, consulte Depuração remota.

Consulte Também