J'ai compilé avec les options par défaut au départ et ensuite j'ai essayé d'ajouter les informations de debug :
Dans les 2 cas, j'obtiens l'adresse des fonctions.gcc -g backtrace.c
J'ai compilé avec les options par défaut au départ et ensuite j'ai essayé d'ajouter les informations de debug :
Dans les 2 cas, j'obtiens l'adresse des fonctions.gcc -g backtrace.c
C'est drôle, au boulot, selon les bécanes, j'ai ou je n'ai pas le nom des fonctions, donc je subodore un paramètre indépendant de notre volonté pour l'affichage
Je sais par exemple que l'affichage des noms des fonctions n'est valable que pour du code ELF.
Suffisait de lire la doc en fait
Currently, the function name and offset only be obtained on systems that use the ELF binary format for programs and libraries. On other systems, only the hexadecimal return address will be present. Also, you may need to pass additional flags to the linker to make the function names available to the program. (For example, on systems using GNU ld, you must pass (-rdynamic.)$ gcc -rdynamic backtrace.c
$ ./a.out
Obtained 5 stack frames.
./a.out(print_trace+0x19) [0x804866d]
./a.out(dummy_function+0xb) [0x80486d8]
./a.out(main+0x16) [0x80486f0]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xdc) [0xb7e518cc]
./a.out [0x80485d1]
$ gcc backtrace.c
$ ./a.out
Obtained 5 stack frames.
./a.out [0x804846d]
./a.out [0x80484d8]
./a.out [0x80484f0]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xdc) [0xb7e1b8cc]
./a.out [0x80483d1]
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager