当前位置: 技术问答>linux和unix
应该是顺序执行,可为啥重复了两遍啊?
来源: 互联网 发布时间:2016-01-14
本文导语: (gdb) list 12 #include 13 #include 14 #include 15 #include 16 #include 17 #define GET_DATA 0x4800 18 19 20 int main(void) 21 { (gdb) list 22 int fd,count; 23 ...
(gdb) list
12 #include
13 #include
14 #include
15 #include
16 #include
17 #define GET_DATA 0x4800
18
19
20 int main(void)
21 {
(gdb) list
22 int fd,count;
23 int i=10;
24 unsigned long rgdata;
25 rgdata=0xffffffff;
26 printf("Before openn");
27
28 if((fd=open("/dev/leddrv",O_RDWR))==-1) {
29 printf("open errorn");
30 exit(1);
31 }
(gdb) list
32
33 while(i) {
34 rgdata=~rgdata;
35 printf("Before write!n");
36 if((count=write(fd,(char *)&rgdata,4))!=4)
37 printf("write errorn");
38 /*
39 if(ioctl(fd,GET_DATA,spinfo)!=0)
40 perror("ioctl error");
41 else
(gdb) list
42 printf("spinfo=%dn",*spinfo);
43 */
44 sleep(1);
45 printf("OK!n");
46 if((--i)==0) {
47 printf("Set new time(1~100), input 999 to quit:n");
48 scanf("%d",&i);
49 if(i==999) break;
50 }
51 }
(gdb) list
52 close(fd);
53 return 0;
54 }
(gdb) list
Line number 55 out of range; ledtest.c has 54 lines.
(gdb) br 24
Breakpoint 1 at 0xc420088: file ledtest.c, line 24.
(gdb) c
Continuing.
Breakpoint 1, main () at ledtest.c:25
25 rgdata=0xffffffff;
(gdb) s
26 printf("Before openn");
(gdb) s
28 if((fd=open("/dev/leddrv",O_RDWR))==-1) {
(gdb) s
51 }
(gdb) s
34 rgdata=~rgdata;
(gdb) s
35 printf("Before write!n");
(gdb) s
34 rgdata=~rgdata;
(gdb) s
35 printf("Before write!n");
(gdb) s
36 if((count=write(fd,(char *)&rgdata,4))!=4)
(gdb)
34,35行为什么执行了两遍啊?
还有,28的下一步为什么是51啊,应该是29或33吧?
请各位大虾指点迷津。
12 #include
13 #include
14 #include
15 #include
16 #include
17 #define GET_DATA 0x4800
18
19
20 int main(void)
21 {
(gdb) list
22 int fd,count;
23 int i=10;
24 unsigned long rgdata;
25 rgdata=0xffffffff;
26 printf("Before openn");
27
28 if((fd=open("/dev/leddrv",O_RDWR))==-1) {
29 printf("open errorn");
30 exit(1);
31 }
(gdb) list
32
33 while(i) {
34 rgdata=~rgdata;
35 printf("Before write!n");
36 if((count=write(fd,(char *)&rgdata,4))!=4)
37 printf("write errorn");
38 /*
39 if(ioctl(fd,GET_DATA,spinfo)!=0)
40 perror("ioctl error");
41 else
(gdb) list
42 printf("spinfo=%dn",*spinfo);
43 */
44 sleep(1);
45 printf("OK!n");
46 if((--i)==0) {
47 printf("Set new time(1~100), input 999 to quit:n");
48 scanf("%d",&i);
49 if(i==999) break;
50 }
51 }
(gdb) list
52 close(fd);
53 return 0;
54 }
(gdb) list
Line number 55 out of range; ledtest.c has 54 lines.
(gdb) br 24
Breakpoint 1 at 0xc420088: file ledtest.c, line 24.
(gdb) c
Continuing.
Breakpoint 1, main () at ledtest.c:25
25 rgdata=0xffffffff;
(gdb) s
26 printf("Before openn");
(gdb) s
28 if((fd=open("/dev/leddrv",O_RDWR))==-1) {
(gdb) s
51 }
(gdb) s
34 rgdata=~rgdata;
(gdb) s
35 printf("Before write!n");
(gdb) s
34 rgdata=~rgdata;
(gdb) s
35 printf("Before write!n");
(gdb) s
36 if((count=write(fd,(char *)&rgdata,4))!=4)
(gdb)
34,35行为什么执行了两遍啊?
还有,28的下一步为什么是51啊,应该是29或33吧?
请各位大虾指点迷津。
|
有一种可能,你修改了源文件,但是没有编译更新你的目标。
|
应该是见鬼了~