Debug in Arm64

Questo articolo descrive il debug di Windows 10 nei processori ARM. Per informazioni generali su Windows 10 su Arm, vedere Windows 10 desktop in Arm64.

In generale, gli sviluppatori che esevono il debug delle app in modalità utente devono usare la versione del debugger corrispondente all'architettura dell'app di destinazione. Usare la versione Arm64 di WinDbg per eseguire il debug delle applicazioni Arm64 in modalità utente e usare la versione Arm di WinDbg per eseguire il debug delle applicazioni ARM32 in modalità utente. Usare la versione x86 di WinDbg per eseguire il debug delle applicazioni in modalità utente x86 in esecuzione nei processori Arm64.

In rari casi in cui è necessario eseguire il debug del codice di sistema, ad esempio WOW64 o CHPE, è possibile usare la versione Arm64 di WinDbg. Se si esegue il debug del kernel Arm64 da un altro computer, usare la versione di WinDbg corrispondente all'architettura di tale altro computer.

Recupero degli strumenti di debug arm per Windows

È possibile ottenere gli strumenti di debug per Arm64 scaricando Windows SDK (versione 10.0.16299 o successiva). Durante l'installazione selezionare la casella Strumenti di debug per Windows .

Gli strumenti di debug si trovano nella Debuggers cartella nella directory di installazione del kit. Gli strumenti x86 sono in Debuggers\x86, gli strumenti ARM32 sono in Debuggers\Arme gli strumenti arm64 sono in Debuggers\Arm64.

Debug del codice Arm64

Arm64 WinDbg è necessario per eseguire il debug del codice Arm64. L'esperienza di debug è simile al debug di applicazioni x86 con WinDbg x86 in Windows x86, ad eccezione delle differenze seguenti.

  • Sono disponibili 32 registri per utilizzo generico: da x0 a x28 e fp, lr, sp.
  • Registro contatore programmi, pc, non è un registro per utilizzo generico.
  • Tutti i registri per utilizzo generico e il registro pc sono di larghezza a 64 bit.
  • Al massimo due punti di interruzione dei dati attivi per l'esecuzione e due punti di interruzione dati attivi per la memoria di lettura/scrittura. Per altre informazioni, vedere Punti di interruzione del processore.

Debug del codice in modalità utente x86

Nei rari casi in cui è necessario usare Arm64 WinDbg per eseguire il debug del codice in modalità utente x86, è possibile usare i comandi WinDbg seguenti per passare da un contesto all'altro:

  • .effmach x86: passare a e visualizzare il contesto x86, simulando l'effetto dell'uso di WinDbg x86.
  • .effmach arm64: passare a e visualizzare il contesto arm64
  • .effmach chpe: passare a e visualizzare il contesto CHPE.

Per altre informazioni su .effmach, vedere .effmach (Effective Machine).

Quando si esegue il debug di app x86 in modalità utente, indipendentemente dalla versione di WinDbg in uso, tenere presente queste considerazioni.

  • Se un thread non viene sottoposto a debug attivo (ad esempio, a rientri singoli, ha rilevato un punto di interruzione), non segnala un'eccezione e non in una chiamata di sistema, il contesto del registro potrebbe non essere aggiornato.
  • L'emulatore genera internamente eccezioni di errore di I/O di dati non allineate, non valide, di I/O di pagina e gestisce quelle generate. Quando si usa WinDbg, è consigliabile configurare queste eccezioni come Ignorate in Debug/Filtri eventi... .
  • Se si usa Arm64 WinDbg in modalità utente, non è supportata l'esecuzione di un'istruzione a istruzione singola tra i limiti di funzione x86 & CHPE. Per risolvere questo problema, impostare punti di interruzione nel codice di destinazione.

Per informazioni generali su ARM64 e WOW64, vedere Running 32-bit Applications (Esecuzione di applicazioni a 32 bit ) nella guida alla programmazione di Windows a 64 bit.

Per informazioni sul debug di applicazioni in esecuzione in WOW64, vedere Debug di WOW64.

Debug in Visual Studio

Per informazioni sul debug di Arm in Visual Studio, vedere Debug remoto.

Vedere anche