Neeraj kushwaha
2008-02-04 04:53:26 UTC
Hi All,
I am trying to find the value of local variable stored in register.
But I am getting wrong value from gdb.
Here what i am trying
#include<stdio.h>
int main()
{
int *a=0;
volatile register int b=0xabcd;
register int c=20;
printf("%x\n",b*c);
*a=0;
return 0;
}
------------------------------
-----------------------
GDB info:
Core was generated by `./a.out'.
Program terminated with signal 11, Segmentation fault.
#0 0x080483e1 in main () at 1.c:9
9 *a=0;
(gdb) info local
a = (int *) 0x0
b = 43981
c = 11305136
(gdb) info reg
eax 0x0 0
ecx 0x0 0
edx 0xac80b0 11305136
ebx 0xac6ff4 11300852
esp 0xbfc65a00 0xbfc65a00
ebp 0xbfc65a28 0xbfc65a28
esi 0x973ca0 9911456
edi 0x0 0
eip 0x80483e1 0x80483e1 <main+61>
eflags 0x210282 [ SF IF RF ID ]
cs 0x73 115
ss 0x7b 123
ds 0x7b 123
es 0x7b 123
fs 0x0 0
gs 0x33 51
(gdb)
The value of local variable is shown as c = 11305136, but actual value is 20.
How to get the correct value of variables which are stored in register.
Regards
Neeraj
I am trying to find the value of local variable stored in register.
But I am getting wrong value from gdb.
Here what i am trying
#include<stdio.h>
int main()
{
int *a=0;
volatile register int b=0xabcd;
register int c=20;
printf("%x\n",b*c);
*a=0;
return 0;
}
------------------------------
-----------------------
GDB info:
Core was generated by `./a.out'.
Program terminated with signal 11, Segmentation fault.
#0 0x080483e1 in main () at 1.c:9
9 *a=0;
(gdb) info local
a = (int *) 0x0
b = 43981
c = 11305136
(gdb) info reg
eax 0x0 0
ecx 0x0 0
edx 0xac80b0 11305136
ebx 0xac6ff4 11300852
esp 0xbfc65a00 0xbfc65a00
ebp 0xbfc65a28 0xbfc65a28
esi 0x973ca0 9911456
edi 0x0 0
eip 0x80483e1 0x80483e1 <main+61>
eflags 0x210282 [ SF IF RF ID ]
cs 0x73 115
ss 0x7b 123
ds 0x7b 123
es 0x7b 123
fs 0x0 0
gs 0x33 51
(gdb)
The value of local variable is shown as c = 11305136, but actual value is 20.
How to get the correct value of variables which are stored in register.
Regards
Neeraj