Kontrollregister und gdb

8

Ich bin neugierig, warum gdb keine Steuerregister für x86 anzeigt. Ich habe gdb mit qemu benutzt, um einige Kernel-Sachen zu debuggen. Ich erhalte Registerwerte mit Info-Registern und Info-All-Registern.

Allerdings kann ich cr3 und cr2 nicht bekommen (in allgemeinen CRs). Gibt es eine Möglichkeit, sie zu bekommen? Wenn nicht, warum werden sie nicht bereitgestellt?

-Danke

    
agent.smith 11.06.2014, 18:04
quelle

2 Antworten

5

Wenn Sie qemu verwenden, können Sie alle Registerzustände erhalten (sogar diejenigen steuern), indem Sie diese zwei Befehle in der Shell ausgeben, in der Sie qemu starten:

  • ctrl-a c (um zur qemu-Befehlsschnittstelle zu wechseln)
  • Info-Register (um Register-Zustände zu erhalten)
Mahouk 03.03.2015 11:59
quelle
2

UPDATE:

Sie können die Werte der Kontrollregister von gdb überprüfen. Das Problem ist, dass Ihr Programm im Real-Modus laufen muss (meistens haben Bootloader einen Teil, der heutzutage im Real-Modus läuft).

AKTUALISIEREN VON @Mahouk:

Da ich und @ Majouk die gleiche Anzahl von Stimmen zu diesem Thread haben, sollten Sie auf jeden Fall seine Antwort überprüfen und versuchen, die Registerwerte von qemu zu bekommen.

ORIGINAL ANTWORT:

Ich hatte das gleiche Problem und es scheint, dass gdb diese Option leider nicht hat. Ich bin nicht sicher, warum sie nicht zur Verfügung gestellt werden, aber ich kann Ihnen eine Alternative vorschlagen.

Sie könnten von Qemu zu Bochs wechseln. Ja, es könnte ein bisschen schrullig oder langsamer sein, aber Es hat einen sehr guten internen Debugger. Der Befehl zum Anzeigen der Steuerregister mit Bochs ist creg .

Weitere Informationen finden Sie in Bochs Dokumentation hier .

Viel Glück:)

    
Serapheim 27.12.2014 23:15
quelle

Tags und Links