第十章 嵌入式Linux的调试技术 学习心得

时间:2022-04-30 16:26:34

10嵌入式Linux的调试技术

心得体会

这一章主要概括的介绍了嵌入式Linux的调试技术的主要内容。通过对第10章的学习,使我对嵌入式Linux的调试技术的方法以及操作步骤有了一个基本的认识。

调试前的准备

在调试一个bug之前,我们所要做的准备工作有:

有一个被确认的bug。

包含这个bug的内核版本号,需要分析出这个bug在哪一个版本被引入,这个对于解决问题有极大的帮助。可以采用二分查找法来逐步锁定bug引入版本号。

对内核代码理解越深刻越好,同时还需要一点点运气。

该bug可以复现。如果能够找到复现规律,那么离找到问题的原因就不远了。

最小化系统。把可能产生bug的因素逐一排除掉。

内核中的bug

内核中的bug也是多种多样的。它们的产生有无数的原因,同时表象也变化多端。从隐藏在源代码中的错误到展现在目击者面前的bug,其发作往往是一系列连锁反应的事件才可能出发的。虽然内核调试有一定的困难,但是通过你的努力和理解,说不定你会喜欢上这样的挑战。

内核调试配置选项

学习编写驱动程序要构建安装自己的内核(标准主线内核)。最重要的原因之一是:内核开发者已经建立了多项用于调试的功能。但是由于这些功能会造成额外的输出,并导致能下降,因此发行版厂商通常会禁止发行版内核中的调试功能。

引发bug并打印信息

1 一些内核调用可以用来方便标记bug,提供断言并输出信息。最常用的两个是BUG()和BUG_ON()。

2 dump_stack(),有些时候,只需要在终端上打印一下栈的回溯信息来帮助你调试。这时可以使用dump_stack()。

五 printk()

内核提供的格式化打印函数。

内存调试工具

1 MEMWATCH   2 YAMD   3 Electric Fence

七 strace

strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用。

八 OOPS

OOPS(也称 Panic)消息包含系统错误的细节…

九 KGDB

kgdb提供了一种使用 gdb调试 Linux 内核的机制。使用KGDB可以象调试普通的应用程序那样,在内核中进行设置断点、检查变量值、单步跟踪程序运行等操作。

 

 

 

http://www.cnblogs.com/yun123456/