调试总结

下面列出调试中的实战经验总结,不定时更新。

 

 

1.函数的栈空间有限,在函数内部申请buf的时候不能过大,比如:

void capture_demo()

{

   char buf[3][16*1024];

......

}

buf这样的临时变量size过大,超出了函数的栈大小限制,会出难查的问题;

如果真的需要buf有这么大的size,可以申请堆空间。

 

2.linux内核驱动只提供直接的操作接口,jobs都由应用层来做,比如:

读取硬件buf中的数据,并存成文件,原因是一方面,在应用层实现写文件

和逻辑操作接口丰富;另一方面由于内核调试手段有限,在应用层调试复杂逻辑

更加方便;

 

 

3.在调试一个复杂的功能时,如果有正确的思路,则会保证调试过程稳扎稳打,

比如,

特殊值法:在验证数据传输通路时,可以先用常数或顺序计数值特殊值来

首先验证通路传输的正确性;

 

 

4.对于一个简单的功能,需要用代码来实现,首先,大脑中想好了思路,并落实为纸面

的功能模块框图和单个模块的流程图;其次,各个击破,分别实现各个模块代码,并分别

测试,确保模块内部正确性;最后,在调试新代码之前,先用特殊值和一般值输入,纸面验证下

是否可以得到预定的输出,最后再做调试;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值