欢迎来到天天文库
浏览记录
ID:42924556
大小:99.00 KB
页数:38页
时间:2019-09-25
《第7章 嵌入式系统的调试》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、嵌入式系统的调试陈文智wzchen@cad.zju.edu.cn浙江大学计算机学院2005年4月1提纲1.远程调试环境的搭建原理2.使用GDB3.Linux内核调试4.实验实验一:利用GDB进行本地调试实验二:利用GDB进行远程调试实验三:arm-linux内核调试21.远程调试环境的搭建原理通用的桌面操作系统与嵌入式操作系统在调试环境上存在明显的差别远程调试,调试器运行于通用桌面操作系统的应用程序,被调试的程序则运行于基于特定硬件平台的嵌入式操作系统(目标操作系统)3远程调试带来以下问题:调试器与被调试程序如何通信被
2、调试程序产生异常如何及时通知调试器调试器如何控制、访问被调试程序调试器如何识别有关被调试程序的多任务信息并控制某一特定任务调试器如何处理某些与目标硬件平台相关的信息41.1插桩(stub)Stub方案是在目标操作系统和调试器内分别加入某些功能模块,二者互通信息来进行调试这一方案需要目标操作系统提供支持远程调试协议的通信模块和多任务调试接口,并改写异常处理的有关部分目标操作系统还需要定义一个设置断点的函数5远程调试示意图:61.2GDB介绍GDB是GNUC自带的调试工具,使用GDB可以完成下面这些任务:运行程序,可以给程
3、序加上所需的调试任何条件在给定的条件下让程序停止检查程序停止时的运行状态通过改变一些数据,可以更快地改正程序的错误71.3GDB远程调试功能介绍如果需要调试的程序和GDB所运行的环境不同,或者说需要调试的环境上根本无法运行起GDB,就需要使用远程调试功能指定需要调试的远程机器的方法是使用targetremote命令在远程机器上,需要实现一个stub文件,在这个文件里面提供串口连接的协议,和传送数据信息的方法8GDB远程调试环境原理图:本地主机Xwindow环境GDB/XGDB远程主机Stub程序内核应用程序串口或TCP
4、/IP连接92.使用GDB2.1GDB命令补齐功能键入gdbgdb_test命令来启动GDB并载入程序gdb_test,命令行进入了GDB模式。$gdbgdb_test……(gdb)10GDB中的常用命令如下:指令解释file载入程序。如filehello。当然,程序的路径名要正确。quit退出GDB。也可以输入'C-d'来退出GDB。run执行载入后的要调试的程序。可以输入参数。info查看程序的信息。多用来查看断点信息。可以用helpinfo来查看具体帮助。infosourc查看当前文件的名字,路径,所使用的程序语
5、言等信息。infostack查看调用栈。infolocal查看局部变量信息。infobrbr是断点break的缩写,用这条指令,可以得到所设置的所有断点的详细信息。listlistFUNCTION列出被调试程序某个函数listLINENUM以当前源文件的某行为中间显示一段源程序list接着前一次继续显示list-显示前一次之前的源程序listFILENAME:FUNCTION显示另一个文件的一段程序,11break最常用和最重要的命令:设置断点。breakFUNCTION在函数入口设置断点breakLINENUM在当前
6、源文件的某一行上设置断点breakFILENAME:LINENUM在另一个源文件的某一行上设置断点break*ADDRESS在某个地址上设置断点watch监视某个表达式或变量,当它被读或被写时让程序断下。格式如下:watchEXPRESSIONset修改变量值。格式如下:setvarible=valuestep单步执行,进入遇到的函数。next单步执行,不进入函数调用,即视函数调用为普通语句。continue恢复中断的程序执行。help通过下面的方法获得帮助,下例为获得list指令。helplist122.2断点与条件
7、断点GDB中的断点有四种状态:有效(Enabled)禁止(Disabled)一次有效(Enabledonce)有效后删除(Enabledfordeletion)条件断点的设置语句:(gdb)break...ifCOND133.Linux内核调试需要在Linux内核里面做一些修改,并且提供一个stub文件把stub,串口驱动程序和Linux内核编译连接在一起利用这个核心启动的系统,在需要进行调试的时候,激活程序的断点,等待本地主机的连接然后,就可以进行内核的调试了143.1内核调试技术调试内核代码的时候,则可以用prin
8、tk()显示监视信息printk()可以指定一个记录级别,在头文件中定义了8种可用的日志级别字符串:KERN_EMERG用于紧急事件消息,它们一般是系统崩溃之前提示的消息。KERN_ALERT用于需要立即采取动作的情况。15KERN_CRIT临界状态,通常涉及严重的硬件或软件操作失败。KERN_ER
此文档下载收益归作者所有