的基本工作原理.ppt
《的基本工作原理.ppt》由会员分享,可在线阅读,更多相关《的基本工作原理.ppt(31页珍藏版)》请在三一办公上搜索。
1、gdb的基本工作原理,刘东 雨丝风片chinaunixmsn:2007.12.15,gdb简介,gdb-GNU debugger。gdb的主要功能 救死扶伤。gdb的主要用途 修复bug;分析程序结构。gdb官方网址-http:/www.gnu.org/software/gdb/gdb.htmlgdb下载地址-http:/ftp.gnu.org/gnu/gdb/,gdb调试的组成架构,gdb调试的工具 ptrace系统调用(1),ptrace系统调用的原型 long ptrace(enum _ptrace_request request,pid_t pid,void*addr,void*dat
2、a);ptrace系统调用的简要说明 ptrace系统调用提供了一种方法来让父进程可以观察和控制其它进程的执行,检查和改变其核心映像以及寄存器。,gdb调试的工具 ptrace系统调用(2),ptrace系统调用的主要选项PTRACE_TRACEME 表示本进程将被其父进程跟踪,交付给这个进程的所有信号(除SIGKILL之外),都将使其停止,父进程将通过wait()获知这一情况。PTRACE_ATTACH attach到一个指定的进程,使其成为当前进程跟踪的子进程,子进程的行为等同于它进行了一次PTRACE_TRACEME操作。PTRACE_CONT 继续运行之前停止的子进程。可同时向子进程交
3、付指定的信号。,gdb的三种调试方式(1),attach并调试一个已经运行的进程调试关系的建立过程:用户确定需要进行调试的进程id;运行gdb,输入attach pid,gdb对指定进程执行下述操作:ptrace(PTRACE_ATTACH,pid,0,0);,gdb的三种调试方式(2),attach并调试一个已经运行的进程,gdb的三种调试方式(3),运行并调试一个新的进程调试关系的建立过程:运行gdb,通过命令行参数或file命令指定目标程序。输入run命令,gdb执行下述操作:通过fork()系统调用创建一个新进程;在新创建的子进程中执行下述操作:ptrace(PTRACE_TRACEM
4、E,0,0,0);在子进程中通过execv()系统调用加载用户指定的可执行文件。,gdb的三种调试方式(4),运行并调试一个新的进程,gdb的三种调试方式(5),远程调试目标机上新创建的进程gdb运行在调试机上,gdbserver运行在目标机上,两者之间的通信数据格式由gdb远程串行协议(Remote Serial Protocol)定义。RSP协议数据的基本格式为:“$.#xx”。gdbserver的启动方式相当于运行并调试一个新创建的进程。,gdb的三种调试方式(6),远程调试目标机上新创建的进程,gdb调试的基础 信号(1),在使用参数为PTRACE_TRACEME或PTRACE_ATT
5、ACH的ptrace系统调用建立调试关系之后,交付给目标程序的任何信号(除SIGKILL之外)都将被gdb先行截获,或在远程调试中被gdbserver截获并通知gdb。gdb因此有机会对信号进行相应处理,并根据信号的属性决定在继续目标程序运行时是否将之前截获的信号实际交付给目标程序。,gdb调试的基础 信号(2),信号是实现断点功能的基础。以x86为例,向某个地址打入断点,实际上就是往该地址写入断点指令INT 3,即0 xCC。目标程序运行到这条指令之后就会触发SIGTRAP信号,gdb捕获到这个信号,根据目标程序当前停止位置查询gdb维护的断点链表,若发现在该地址确实存在断点,则可判定为断点
6、命中。gdb暂停目标程序运行的方法是向其发送SIGSTOP信号。kill_lwp(process-head.id,SIGSTOP);,gdb的同步模式和异步模式,同步模式 gdb将以同步方式等待目标程序发生停止事件,可称之为“死等”。因此,在目标程序运行期间,gdb不再扫描标准输入,用户也无法输入任何调试命令,要么等待目标程序发生调试事件而停止,要么通过“Ctrl c”来暂停目标程序的运行。异步模式 gdb不会同步等待目标程序发生停止事件,此类事件将通过异步上报的方式告知gdb。在目标程序运行期间,gdb仍将扫描标准输入,用户可以输入调试命令。使用同步模式还是异步模式由调试目标决定,在启动gd
7、b之后通过target命令的参数给出。比如远程同步目标为target remote,而远程异步目标为target async。,gdb远程异步模式中的事件循环(1),gdb远程异步模式的运转完全是由外部事件来激励的。共有两个外部事件源,一个是标准输入(用户输入的调试命令),一个是远程连接(gdbserver上报的异步事件)。负责对外部事件源进行检测和对事件进行分发处理的功能模块就是事件循环。建立调试连接之后,gdb就会不断地对上述两个文件描述符进行poll操作。一旦发现某个文件描述符上有输入事件,就将该事件分发给相应的功能模块进行处理,该事件处理完毕之后将回到事件循环继续进行poll操作。,g
8、db远程异步模式中的事件循环(2),gdb远程异步模式中的事件循环(3),标准输入上会出现哪些事件?用户输入的任何调试命令,比如cli的continue、next、step、breakpoint或者是mi的exec-continue、exec-next、exec-step、break-insert等等。远程连接上会出现哪些事件?目标程序可能遇到的任何调试事件,比如遇到断点、收到随机信号、单步结束、线程创建、线程退出、进程退出等等。,gdb指令级单步的实现(1),所谓指令级单步就是指gdb控制目标程序只运行一条指令之后即停止。指令级单步是next、step、nexti、stepi等运行类调试命令
9、的基础。指令级单步有硬件单步和软件单步之分。所谓硬件单步是指cpu架构本身就支持指令级单步,目标程序可以在运行一条指令之后自动停止。所谓软件单步是指cpu架构不支持指令级单步,需要gdb用软件方法来实现指令级单步。支持硬件单步的架构如x86和ppc。对于x86,可通过设置EFLAGS寄存器中的TF标志来将cpu置于单步模式。对于ppc,则可通过设置MSR寄存器中的SE标志来将cpu置于单步模式。在单步模式中,cpu每执行一条指令,就会产生一个单步异常,通知gdb进行处理。,gdb指令级单步的实现(2),不支持硬件单步的架构如arm和mips。对于此类架构,gdb采用的是用临时的软件断点来模拟单
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 工作 原理
链接地址:https://www.31ppt.com/p-5890725.html