en Linux y Mac OS X Puedo usar stepi y nexti para depurar una aplicación sin información de depuración.Depuración de bibliotecas desmontadas con gdb
En Mac OS X gdb muestra las funciones que se llaman dentro de la biblioteca, aunque a veces avanzan varias instrucciones de ensamblador en cada instrucción stepi.
En Linux, cuando entro en una biblioteca dinámica, gdb se pierde. Por ejemplo, con puts() hay tres instrucciones de ensamblador dentro de puts(), una vez que gdb alcanza el salto en 0x080482bf, falla con el mensaje "No function contains program counter for selected frame".
0x080482ba in [email protected]()
(gdb) disassemble
Dump of assembler code for function [email protected]:
0x080482b4 <[email protected]+0>: jmp *0x8049580
0x080482ba <[email protected]+6>: push $0x10
0x080482bf <[email protected]+11>: jmp 0x8048284 <_init+48>
End of assembler dump.
(gdb) stepi
0x080482bf in [email protected]()
(gdb) stepi
0x08048284 in ??()
(gdb) disassemble
No function contains program counter for selected frame.
¿Sabes cómo depurar estas llamadas a la biblioteca con gdb.
¿Qué versión de gdb? –
Además, ¿qué ocurre cuando utilizas stepi en Linux? Usted dice que no puede seguir las instrucciones en absoluto, pero no describe lo que realmente sucede. ¿Puedes publicar una sesión de muestra? –
Gracias, estoy usando Slackware 13.0 con su gdb 6.8 preinstalado. He aclarado lo que sucede. – Freeman