|
发表于 2003-9-9 23:08:54
|
显示全部楼层
回复: 来试试看 gdb 排错。
最初由 quanliking 发表
下面是摘自 Linux 程序设计(第2版) 里的一个例子,程序写的很糟糕,大致是用冒泡法排序,即没有注释,而且还有错误,作者通过这个例题讲解了如何使用 gdb 排错。
我把它拿出来,大伙也试试看,眼力好的,一眼就能看出来,看不出来不妨让 gdb 帮忙。
- #include <stdio.h>
- typedef struct {
- char *data;
- int key;
- } item;
- item array[] = {
- {"bill", 3},
- {"neil", 4},
- {"john", 2},
- {"rick", 5},
- {"alex", 1},
- };
- sort(item *a, int n)
- {
- int i = 0, j = 0;
- int s = 1;
-
- for(; i < n && s != 0; i++) {
- s = 0;
- for(j = 0; j < n; j++) {
- if(a[j].key = a[j+1].key) {
- item t = a[j];
- a[j] = a[j+1];
- a[j+1] = t;
- s++;
- }
- }
- n--;
- }
- }
- main()
- {
- sort(array, 5);
- }
复制代码
除非是隐藏很深的BUG,高手很少动用GDB的,呵呵。
只要看两眼,就知道错在什么地方了。这样的人我就遇到过,可惜我还没有达到那个境界,正在努力中............ |
|