Sur Linux et Mac OS X, je peux utiliser stepi et nexti pour déboguer une application sans informations de débogage.
Sous Mac OS X, gdb montre les fonctions qui sont appelées à l'intérieur de la bibliothèque, bien qu'il arrive parfois à avancer plusieurs instructions d'assembleur à chaque instruction stepi.
Sous Linux, lorsque je rentre dans une bibliothèque dynamique, gdb se perd. Par exemple, avec puts(), il y a trois instructions d'assembleur à l'intérieur de puts(), une fois que gdb atteint le saut à 0x080482bf, il échoue avec le message "Aucune fonction ne contient le compteur de programme pour le cadre sélectionné".
0x080482ba in puts@plt ()
(gdb) disassemble
Dump of assembler code for function puts@plt:
0x080482b4 : jmp *0x8049580
0x080482ba : push $0x10
0x080482bf : jmp 0x8048284 <_init+48>
End of assembler dump.
(gdb) stepi
0x080482bf in puts@plt ()
(gdb) stepi
0x08048284 in ?? ()
(gdb) disassemble
No function contains program counter for selected frame.
Savez-vous comment déboguer ces appels de bibliothèque avec gdb ?