打印

debug的基本技法

[复制链接]
1540|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tianli1980|  楼主 | 2012-5-12 22:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在我们将bug稍作分类,以下是当bug表现出什么样的行为,可能是怎么样的问题所导致的,虽然不定是百分百准确,但按照这个方向去查,应该是**不离十了。

如果驱动程序已经通过严格测试,当发生PC OK但机器上的NG的bug时,通常是内存使用不当的问题。

函数返回时死机,应该是 stack overflow 的问题。

当某块memory被破坏时,可以检查一下map文件,看看这块内存的前后各是什么乃父,应该就是邻近的内存使用不当。

当CPU发生address error时,在某些有address alignment 限制的CPU上,可能是在奇数地址操作了偶数个字节,此时应该要检查程序中指针的值。

如果heap被破坏了,可在任何可疑的地方调用“检查memory pool完整性”的函数,应该就可以找操作了偶数个字节,此时应该要检查程序中指针的值。

在嵌入式系统中,局部变量是没有初始值,必须由程序设计师自己设定的,如果没设定局部变量的初值就直接使用的话就可能发生每次执行结果不同的现象。

在程序中要用sizeof()取得变量变量或数据结构真正占据内存的size,不要自己想当然地直接写写数字,否则很容易造成内存操作的错误。

相关帖子

沙发
拿起书本| | 2012-5-13 00:04 | 只看该作者
这些东西多总结一下,对于初学者帮助很大,先顶一下。

使用特权

评论回复
板凳
huangfeng33| | 2012-5-13 00:09 | 只看该作者
总结的不错,不过有些地方说的太过肯定,有些东西楼主还要再体会一下。

使用特权

评论回复
地板
dgun| | 2012-5-14 17:30 | 只看该作者
总结一下会加深自己的理解的,继续努力

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

482

主题

2214

帖子

11

粉丝