[SOS] Debogage avec bochs.

David Decotigny david.decotigny at free.fr
Ven 5 Nov 09:41:42 CET 2004


Bonjour,

Thomas a donne les infos. Je rajouterais un petit "quick start". Avec 
bochs et qemu c'est a peu pres la meme chose, sauf qu'on n'a pas besoin 
de recompiler qemu pour ca marche. Pour des raisons de pure mauvaise 
volonte et de patience, j'utilise plutot qemu sachant qu'il faut parfois 
interpreter son comportement avec des pincettes en cas de bug :

Dans un terminal :
   qemu -S -s -fda fd.img
   (qemu attend que gdb se connecte)

Dans un autre terminal :
   gdb sos.elf
   prompt gdb> target remote localhost:1234
   prompt gdb> toutes les commandes gdb classiques avec interpretation 
symbolique (ex: break sos_kmem_cache_create, x/2w *current_kthread, etc...)

A noter que gdb ne permet pas d'observer le contenu de certains 
registres (cr0, cr2, ...). Dans ce cas, plutot que d'utiliser "info 
registers" de gdb, utiliser "info registers" dans le "monitor" de qemu 
(shift-Alt F2 ou Ctrl-Alt 2 suivant les versions).

Quand on debugge des choses bourrines avec qemu (p.ex l'init de la 
pagination), le comportement en cas de faute double ou triple est 
totalement errone, cf qemu/cpu-exec.c :
                     /* simulate a real cpu exception. On i386, it can
                        trigger new exceptions, but we do not handle
                        double or triple faults yet. */
C'est peut-etre aussi pour cette raison que des OS guest comme XP ont 
quelques problemes dans qemu. Les "pincettes" dont je parlais au debut 
concernent cette restriction.

Comme dit, bochs permet de faire la meme chose, c'est-a-dire de servir 
d'esclave a gdb. Mais bochs a aussi son debugger integre qui offre a peu 
pres les memes caracteristiques que gdb, sauf qu'il permet aussi de voir 
la valeur des registres que gdb ne connait pas (commande dump_cpu). Pour 
le debuggage symbolique, l'equivalent de "file sos.elf" de gdb est 
"load-symbols sos.map".

Bonne journee,

-- 
David Decotigny -- http://david.decotigny.free.fr


Plus d'informations sur la liste de diffusion Sos