文档介绍:提纲
1. 远程调试环境的搭建原理
2. 使用GDB
3. Linux内核调试
4. 实验
实验一:利用GDB进行本地调试
实验二:利用GDB进行远程调试
实验三:arm-linux内核调试
*
嵌入式系统 第7章 嵌入式系统的调试
1. 远程调试环境的搭建原理
通用的桌面操作系统与嵌入式操作系统在调试环境上存在明显的差别
远程调试,调试器运行于通用桌面操作系统的应用程序,被调试的程序则运行于基于特定硬件平台的嵌入式操作系统(目标操作系统)
*
嵌入式系统 第7章 嵌入式系统的调试
远程调试带来以下问题:
调试器与被调试程序如何通信
被调试程序产生异常如何及时通知调试器
调试器如何控制、访问被调试程序
调试器如何识别有关被调试程序的多任务信息并控制某一特定任务
调试器如何处理某些与目标硬件平台相关的信息
*
嵌入式系统 第7章 嵌入式系统的调试
插桩(stub)
Stub方案是在目标操作系统和调试器内分别加入某些功能模块,二者互通信息来进行调试
这一方案需要目标操作系统提供支持远程调试协议的通信模块和多任务调试接口,并改写异常处理的有关部分
目标操作系统还需要定义一个设置断点的函数
*
嵌入式系统 第7章 嵌入式系统的调试
远程调试示意图 :
*
嵌入式系统 第7章 嵌入式系统的调试
GDB介绍
GDB是GNU C自带的调试工具,使用GDB可以完成下面这些任务:
运行程序,可以给程序加上所需的调试任何条件
在给定的条件下让程序停止
检查程序停止时的运行状态
通过改变一些数据,可以更快地改正程序的错误
*
嵌入式系统 第7章 嵌入式系统的调试
GDB远程调试功能介绍
如果需要调试的程序和GDB所运行的环境不同,或者说需要调试的环境上根本无法运行起GDB,就需要使用远程调试功能
指定需要调试的远程机器的方法是使用target remote命令
在远程机器上,需要实现一个stub文件,在这个文件里面提供串口连接的协议,和传送数据信息的方法
*
嵌入式系统 第7章 嵌入式系统的调试
GDB远程调试环境原理图:
本地主机
Xwindow环境
GDB/XGDB
远程主机
Stub程序
内核
应用程序
串口或TCP/IP连接
*
嵌入式系统 第7章 嵌入式系统的调试
2. 使用GDB
GDB命令
补齐功能
键入gdb gdb_test命令来启动GDB并载入程序 gdb_test,命令行进入了GDB模式。
*
嵌入式系统 第7章 嵌入式系统的调试
GDB中的常用命令如下:
*
嵌入式系统 第7章 嵌入式系统的调试