|
发表于 2004-11-22 10:05:34
|
显示全部楼层
(gdb) list
1 int main(void)
2 {
3 int var1=0;
4 char var2=0;
5 int var3=0;
6 char str_val1[]="24\n";
7 char str_val2[]="32\n";
8 char str_val3[]="48\n";
9 sscanf(str_val1,"%d",&var1);
10 sscanf(str_val2,"%d",&var2);
(gdb) break 5
Breakpoint 1 at 0x8048377: file test.c, line 5.
(gdb) run
Starting program: /home/macroheart/test
Breakpoint 1, main () at test.c:5
5 int var3=0;
(gdb) display var3
1: var3 = 134513666
(gdb) display var2
2: var2 = 0 '\0'
(gdb) display var1
3: var1 = 0
(gdb) next
6 char str_val1[]="24\n";
3: var1 = 0
2: var2 = 0 '\0'
1: var3 = 0
(gdb) next
7 char str_val2[]="32\n";
3: var1 = 0
2: var2 = 0 '\0'
1: var3 = 0
(gdb) next
8 char str_val3[]="48\n";
3: var1 = 0
2: var2 = 0 '\0'
1: var3 = 0
(gdb) display str_val1
4: str_val1 = "24\n"
(gdb) display str_val2
5: str_val2 = "32\n"
(gdb) display str_val3
6: str_val3 = "\024\n\023B"
(gdb) next
9 sscanf(str_val1,"%d",&var1);
6: str_val3 = "48\n"
5: str_val2 = "32\n"
4: str_val1 = "24\n"
3: var1 = 0
2: var2 = 0 '\0'
1: var3 = 0
(gdb) next
10 sscanf(str_val2,"%d",&var2);
6: str_val3 = "48\n"
5: str_val2 = "32\n"
4: str_val1 = "24\n"
3: var1 = 24
2: var2 = 0 '\0'
1: var3 = 0
(gdb) next
11 sscanf(str_val3,"%d",&var3);
6: str_val3 = "48\n"
5: str_val2 = "32\n"
4: str_val1 = "24\n"
3: var1 = 0
2: var2 = 32 ' '
1: var3 = 0
(gdb) next
12 printf("var1=%d,var2=%d,var3=%d\n",var1,var2,var3);
6: str_val3 = "48\n"
5: str_val2 = "32\n"
4: str_val1 = "24\n"
3: var1 = 0
2: var2 = 32 ' '
1: var3 = 48
(gdb) next
var1=0,var2=32,var3=48
13 }
6: str_val3 = "48\n"
5: str_val2 = "32\n"
4: str_val1 = "24\n"
3: var1 = 0
2: var2 = 32 ' '
1: var3 = 48
(gdb)
看的晚了点,不过挺有意思的,中间var1确被赋为24了,还有var2的初始值也和别人不一样,有点奇怪。谢谢! |
|