总结一下我调试linux的几种常用手段。
1.printk。经典的方法,有时候最笨的往往是最有效的。
2.打开oops。得出有效信息然后对照相应的C代码调试。
3.coredump。只能调试应用程序,因为coredump的潜规则是:linux内核是稳定的,并由内核产生。
4.打桩。对相应的函数用宏重新定义,或者在结构体中增加相应的调试成员,然后在合适的地方有效利用此成员。比如重构malloc等。
5.缓冲区buffer.这是听我司一位高手讲座时学到的,比如skb一秒钟可能会打很多,但skb出错的话就最后一个包,我们可以设一个缓冲区为100,这样在出错时自动触发打印出最后100个。
调试注意细则:
1.细心。仔细观察出错时的现象,尽可能不要放过任何线索。包括测试的环境及信息。这个说起来容易,不同的人看同一个现象所得出的信息绝对是千差W别的。
2.充分了解linux内核所提供的信息。比如proc下面就有很多有价值的东西。比如内存泄露的/proc/meminfo /proc/slabinfo ps等。
本文介绍了五种常用的Linux调试方法:使用printk进行日志记录;启用oops错误报告;利用coredump进行应用程序调试;通过打桩技术对特定函数进行跟踪;设置缓冲区记录最近的数据活动。此外还提供了一些调试时需要注意的细节。
4万+





