[SOS] Debogage avec GDB vs qemu&bochs (pb de segfault)
akibobo
akibobo at backtojava.org
Mar 29 Nov 17:56:24 CET 2005
Bonjour à tous,
J'ai un petit problème avec les versions de SOS des articles 2 et 3 (j'en suis
resté à ces versions car elles contiennent ce dont j'ai beson : pagination &
segmentation).
J'essaye de déboguer avec GDB (voir détails plus bas) et j'obtiens
systématiquement des problèmes dans le code de l'init video :
(GDB:)
Program received signal SIGSEGV, Segmentation fault.
0x0020222d in sos_x86_videomem_setup ()
(gdb) disassemble
Dump of assembler code for function sos_x86_videomem_setup:
0x00202220 <sos_x86_videomem_setup+0>: push %ebp
0x00202221 <sos_x86_videomem_setup+1>: mov %esp,%ebp
0x00202223 <sos_x86_videomem_setup+3>: mov $0xa,%eax
0x00202228 <sos_x86_videomem_setup+8>: mov $0x3d4,%edx
0x0020222d <sos_x86_videomem_setup+13>: out %al,(%dx)
0x0020222e <sos_x86_videomem_setup+14>: mov $0x20,%eax
0x00202233 <sos_x86_videomem_setup+19>: mov $0x3d5,%edx
0x00202238 <sos_x86_videomem_setup+24>: out %al,(%dx)
0x00202239 <sos_x86_videomem_setup+25>: mov $0x0,%eax
0x0020223e <sos_x86_videomem_setup+30>: pop %ebp
0x0020223f <sos_x86_videomem_setup+31>: ret
End of assembler dump.
(gdb)
le problème se situe au niveau de l'instruction outb.
En enlevant le code de l'init video, j'obtiens ce problème de segfault au
niveau de l'instruction lgdt.
J'obtiens un problème similaire avec l'utilisation de bochs. Le problème
viendrait donc de SOS ?
Voilà, je n'arrive pas bien à comprendre d'où sort ce segfault qui m'empeche
de débugger le reste, si quelqu'un a une idée, ca m'intéresse...
D'avance, merci.
Raphaël.
*****
Détails pour le débugage GDB/qemu :
je lance qemu en mode debug :
qemu -boot a -fda tmp/sos-code-article3/fd.img -s -S
je lance gdb avec l'image noyau : gdb sos.elf
puis :
target remote :1234
run
J'arrive à désactiver les messages de la part de GDB mais ca ne règle en rien
le problème (handle SIGSEGV nopass noprint nostop).
Plus d'informations sur la liste de diffusion Sos