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.Citation:
gcc -g backtrace.c
Version imprimable
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.Citation:
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 :D
Citation:
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.)
Citation:
$ 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]