第5课开发环境的建立和调试技术(编辑修改稿)内容摘要:

程序。 如 file hello。 当然,程序的路径名要正确。 quit 退出 GDB。 也可以输入 39。 Cd39。 来退出 GDB。 run 执行载入后的要调试的程序。 可以输入参数。 info 查看程序的信息。 多用来查看断点信息。 可以用 help info来查看具体帮助。 info sourc查看当前文件的名字,路径,所使用的程序语言等信息。 info stack 查看调用栈。 info local 查看局部变量信息。 info br br是断点 break的缩写,用这条指令,可以得到所设置的所有断点的详细信息。 list list FUNCTION列出被调试程序某个函数 list LINENUM以当前源文件的某行为中间显示一段源程序 list 接着前一次继续显示 list 显示前一次之前的源程序 list FILENAME:FUNCTION显示另一个文件的一段程序, 30 break 最常用和最重要的命令:设置断点。 break FUNCTION在函数入口设置断点 break LINENUM在当前源文件的某一行上设置断点 break FILENAME:LINENUM在另一个源文件的某一行上设置断点 break *ADDRESS在某个地址上设置断点 watch 监视某个表达式或变量,当它被读或被写时让程序断下。 格式如下: watch EXPRESSION set 修改变量值。 格式如下: set varible=value step 单步执行,进入遇到的函数。 next 单步执行,不进入函数调用,即视函数调用为普通语句。 continue 恢复中断的程序执行。 help 通过下面的方法获得帮助,下例为获得 list指令。 help list 31 断点与条件断点 • GDB中的断点有四种状态: – 有效 (Enabled) – 禁止 (Disabled) – 一次有效 (Enabled once) – 有效后删除 (Enabled for deletion) • 条件断点的设置语句: (gdb) break ...if COND 6. Linux 内核调试 • Linux内核调试 • Printk、 KGDB、 KDB – Linux 内核调试 ——Printk – Linux 内核调试 ——KGDB – Linux 内核调试 ——KDB Linux内核调试 GO! 当内核运行出现错误的时候,首先要明确 定义和可靠地重视这个错误现象。 Linux内核 不包括 内核调试 调试是软件开发过程中一 个必不可少的环节,在内 核开发的过程中也不可避 免地会面对如何调试内核 的问题。 对于庞大的 Linux 内核软件工程,单靠阅读代码查找问题已经非常困难,需要借助调试技术解决 BUG。 调试内核很难,实际上内核不同于其他软件工程。 内核的 BUG 是多种多样的。 • 需要在 Linux内核里面做一些修改,并且提供一个 stub文件 • 把 stub,串口驱动程序和 Linux内核编译连接在一起 • 利用这个核心启动的系统,在需要进行调试的时候,激活程序的断点,等待本地主机的连接 • 然后,就可以进行内核的调试了 、 KGDB、 KDB 只有熟悉了内核各部分的代码实现,才能够找到准确的跟踪点; 只有熟悉操作系统的内核机制,才能准确地判断系统运行状态。 进行 调试 有两种方法:将 消息打印到屏幕 上,或使用 调试器 KDB KGDB Printk 目前本文档中主要介绍 printk, KGDB, KDB这三个调试工具。 Linux 内核调试 ——Printk printk() 是调试内核代码时最常用的一种技术。 在内核代码中的特定位置加 入 printk() 调试调用,可以直接把所关心的信息打印到屏幕上 printk 函数具有极好的健壮性,不受内核运行条件的限制,在系统运行。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。