Chinaunix首页 | 论坛 | 博客
  • 博客访问: 116404
  • 博文数量: 32
  • 博客积分: 2015
  • 博客等级: 大尉
  • 技术积分: 475
  • 用 户 组: 普通用户
  • 注册时间: 2005-11-01 14:29
文章分类

全部博文(32)

文章存档

2011年(1)

2009年(12)

2008年(19)

我的朋友

分类:

2009-01-11 07:50:38

这两天终于把一个困扰了我N久的一个bug找了出来,这个超级大bug从项目一开始就存在。这个bug存在于bboot的kermit协议中,当传送A3时,解码时被我解成了E3,正确的解法应该是忽略第8bits,这时A3等于控制字符‘#’。于是当我的kernel二进制文件中存在AE这个byte时,问题就来了,现象是莫名奇妙,形式是千奇百怪。比如说多插入一行,程序出现异常,少插入一行程序就正常。明明写了个死循环,而程序依然能跑飞。现在自然能很好的解释,但当时我根本没有想到kermit中有问题,因为之前这个bboot一直工作非常的好。于是我开始怀疑gcc,熟悉了不少编译选项,甚至发现O0~O2之间都有差别,难道gcc如此不堪,Linux也是这么编译的,也没有看到有这种情况。这个时候项目几近崩溃,于是冲头整理代码,从零开始,的确发现了不少存在的bug,于是就当是找到了bug,但心中明白这恐怕未必就是那个bug。当新版本继续开发到一定程度时,莫名奇妙的故障又来了,心情莫名其妙的糟糕,对着老婆也没好脸(sorry)。于是觉得只有使用skyeye才能解决这个问题了,于是慢慢熟悉skyeye那套东西。但结果让我很奇怪,skyeye下运行我的程序是好的。什么skyeye嘛,毕竟只是个玩具,并不能完全模拟硬件。于是继续痛苦。终于开始怀疑bboot,下决心检查一下,修改bboot代码,将受到的镜像以16进制打印,保存为文本,再写了段X86小代码,将kernel镜像转换为相同格式文本,使用ultra edit文本比较工具,问题终于浮出水面。虽然当初很很痛苦,但当找到真正的bug时内心的喜悦无以言表,这就是一个程序员的苦与乐。
最后,我对自己怀疑过gcc和skyeye而感到惭愧,他们是真正优秀的程序。gcc自不必说,而skyeye作为一款国产开源软件,足以使每个中国的程序员感到自豪。感谢他们!
阅读(706) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~