[SOS] Encore des trucs pour debugger

Christophe Lucas clucas at altern.org
Dim 12 Juin 12:30:17 CEST 2005


David Decotigny wrote:

>Bonjour,
>
>Dans le magazine et par des messages de Thomas, on vous a donne quelques
>trucs pour debugger. En voici un autre.
>
>Imaginons que j'ai un defaut de page ou une assertion qui explose. Sur
>mon terminal, j'ai droit au fameux "backtrace". Comment exploiter ce
>backtrace sans trop se fatiguer ? En utilisant l'outil "addr2line" qui
>utilise les symboles de debuggage presents dans "sos.elf".
>
>Exemple :
>-----------------------------------
>[baloo] src/sos/sos/art1 >qemu -fda fd.img
>warning: could not open /dev/net/tun: no virtual network emulation
>Message in a bochs: This is SOS article 8 MASTER.
>Unresolved page Fault at instruction 0x215dd7 on access to address 0x34
>(info=0)!
>[0] PC=0x208251 arg1=0x1 arg2=0x1 arg3=0xc
>[1] PC=0x20b928 arg1=0x21b980 arg2=0x215dd7 arg3=0x34
>[2] PC=0x20c033 arg1=0xe arg2=0x2e7ee0 arg3=0x100010
>[3] PC=0x20215a arg1=0x215dd7 arg2=0x8 arg3=0x246
>[4] PC=0x0 arg1=0x15000 arg2=0x24 arg3=0x0
>[5] PC=0x215339 arg1=0x250460 arg2=0x0 arg3=0x0
>[6] PC=0x2127d8 arg1=0x0 arg2=0x21240 arg3=0x0
>[7] PC=0x20bb9f arg1=0x2badb002 arg2=0x2d8c0 arg3=0xffffffff
>[8] PC=0x201011 arg1=0xffffffff arg2=0xffffffff arg3=0xffffffff
>-----------------------------------
>
>Je prends ma souris, je sélectionne tout ça, et, au prompt du shell, je
>fais :
>-----------------------------------
>sed 's/.*PC=\(0x[0-9a-f]*\).*/\1/g' | addr2line -e sos.elf -f
>-----------------------------------
>Puis je copie dans le terminal ce que je viens de selectionner, je fais
>"Ctrl-D", et j'obtiens :
>-----------------------------------
>sos_thread_dump_backtrace
>sos/thread.c:858
>sos_display_fatal_error
>sos/assert.c:45
>pgflt_ex
>sos/main.c:355
>sos_exception_wrapper_14
>hwcore/exception_wrappers.S:232
>??
>??:0
>virtfs_mount
>drivers/fs_virtfs.c:642
>sos_fs_subsystem_setup
>sos/fs.c:102
>sos_main
>sos/main.c:2326
>loop
>bootstrap/multiboot.S:70
>-----------------------------------
>
>Qui me donne tout simplement le backtrace sous la forme d'une liste de :
>-----------------------------------
>nom_de_fonction
>chemin_vers_source:numero_de_ligne
>-----------------------------------
>
>Bref, vous l'aurez compris, ca donne la meme chose que gdb. Mais voila,
>quand on a oublie de lancer gdb avant, c'est une solution bien pratique.
>
>C'etait le grand classique du jour.
>
>Bonne journee,
>
>_______________________________________________
>Sos mailing list
>Sos at the-doors.enix.org
>http://the-doors.enix.org/cgi-bin/mailman/listinfo/sos
>
>  
>
Ce qui peut faire la seconde entrée de la FAQ ;)


Plus d'informations sur la liste de diffusion Sos