La technique est décrite ici :
http://unixhelp.ed.ac.uk/CGI/man-cgi?strip
– Link the executable as normal
– Copy "foo" to "foo.full" ou "objcopy –only-keep-debug foo foo.full"
– Run "strip –strip-debug foo"
– Run "objcopy –add-gnu-debuglink=foo.full foo"

La commande « symbol-file » doit pouvoir permettre d’aller lire les symboles depuis un autre fichier que le fichier courant.
Pour add-symbol-file il faut connaître l’adresse à laquelle on souhaite lire les symboles.
La page suivante décrit la technique pour déterminer cette adresse :
http://linux-mobile-hacker.blogspot.com/2008/02/debug-shared-library-with-gdbserver.html

# cat /proc/pid_proc/maps
b7f11000-b7f12000 r-xp 00000000 08:02 1759414 /usr/lib/libfoo.so
b7f12000-b7f13000 rw-p 00000000 08:02 1759414 /usr/lib/libfoo.so
# objdump -h /usr/lib/libfoo.so grep text
 .text 00000154 000002f0 000002f0 000002f0 2**4
(gdb) ADDR=0xb7f11000+0x000002f0=0xb7f112f0
(gdb) add-symbol-file libfoo.so 0xb7f112f0

Sinon on peut créer un core après un attach avec la commande generate-core-file
Ou bien directement en ligne de commande : gcore <pid>

http://wiki.debian.org/HowToGetABacktrace

thread apply all bt 10

Ignorer les signaux qui ne nous intéressent pas :
handle SIGPIPE nostop noprint pass

http://tedlab.mit.edu/~dr/gdbintro.html
finish (fin)
Continue until the current function has returned.
until (u) [function][line]
Continue until the program reaches a source line greater than the current one

Au passage pour voir précisément les secondes avec ls :

ls --time-style="full-iso" -l mbox

ou bien

ls --time-style="+%d-%m-%y %H:%M:%S" -l mbox

Pour les registres : http://sunsite.ualberta.ca/Documentation/Gnu/gdb-4.18/html_node/gdb_61.html

info registers

Par exemple :

x/x $rdi+40

Au passage :

set print demangle on
set print asm-demangle on
set disassembly-flavor intel
disassemble /m

Pour placer un breakpoint hardware sur une données :

watch logger ## logger est le nom d'une variable

Cf http://sunsite.ualberta.ca/Documentation/Gnu/gdb-4.18/html_node/gdb_30.html#SEC30
D’autres détails utile à lire :
stackoverflow – GDB hardware watchpoint very slow – why?
stackoverflow -gdb problem setting hardware watchpoint/how to set software watchpoint

Des détails pour explorer les symboles :
http://developer.apple.com/mac/library/documentation/DeveloperTools/gdb/gdb/gdb_14.html

Savoir à quel morceu de code correspond une adresse :
info line *0x0006f5dc
Voir les info de lignes dans un exe : readelf – Displays information about ELF files.
http://linux.die.net/man/1/readelf
–debug-dump[=line
Examiner le contenu de la table de symbole de GBD :
http://www.slac.stanford.edu/comp/unix/package/rtems/doc/html/gdb/gdb.info.Symbols.html

info files // montre tous les fichiers symboles qui ont été chargés, et à quelles adresses se trouvent ces symboles pour chaque fichier

echo info files > command
gdb monprog.dbg corefile  < command  > list_symbol_map.txt

Attention : Si un fichier .so qui est impliqué dans la backtrace ne peut pas être chargé, il peut empécher de remonter la backtrace. Par contre, les erreurs d’offset où gdb parle de problème de prelink ne sont pas bloquantes.