[eside-ghost] GDB y stack frames
Arkaitz
arkaitzj en gmail.com
Jue Mayo 1 09:27:26 CEST 2008
Aupa, tengo una duda con gdb,
He estado debugeando este simple programa y veo alguna pequenia diferencia
que no acabo de seguir.
Como se ve, he metido un breakpoint en la llamada al sleep y examino la
pila.
El gdb me canta una direccion de arglist 0xbfe7ad18, pero como se ve en
realidad, el 5 que le paso al sleep esta en 0xbfe7ad20, osea, 8 bytes mas a
tarde. Pensaba que podria ser rollo direccion de retorno y asi, pero en ese
caso no entiendo porque GDB me canta eso con el label arglist, la direccion
del frame la pone en ad50, pero entiendo que esta mas tarde porque crece
hacia arriba.
Alguna pista?
(gdb) list main
1 #include <sys/types.h>
2
3 int main(){
4 printf("%d\n",sizeof(size_t));
5 sleep(5);
6 }
7
(gdb) bt
#0 0x0086c4d6 in sleep () from /lib/tls/libc.so.6
#1 0x080483d4 in main () at main.c:5
(gdb) frame 0
#0 0x0086c4d6 in sleep () from /lib/tls/libc.so.6
(gdb) info frame
Stack level 0, frame at 0xbfe7ad20:
eip = 0x86c4d6 in sleep; saved eip 0x80483d4
called by frame at 0xbfe7ad50
Arglist at 0xbfe7ad18, args:
Locals at 0xbfe7ad18, Previous frame's sp is 0xbfe7ad20
Saved registers:
ebp at 0xbfe7ad18, eip at 0xbfe7ad1c
(gdb) x/8x 0xbfe7ad18
0xbfe7ad18: 0xbfe7ad48 0x080483d4 0x00000005 0x00000004
0xbfe7ad28: 0xbfe7ad48 0x080483f6 0x00907ff4 0x00907ff4
--
Arkaitz
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: https://listas.deusto.es/mailman/private/eside-ghost/attachments/20080501/e8604de4/attachment.htm
Más información sobre la lista de distribución eside-ghost