《的基本工作原》ppt课件

《的基本工作原》ppt课件

ID:27160950

大小:803.51 KB

页数:31页

时间:2018-12-01

《的基本工作原》ppt课件_第1页
《的基本工作原》ppt课件_第2页
《的基本工作原》ppt课件_第3页
《的基本工作原》ppt课件_第4页
《的基本工作原》ppt课件_第5页
资源描述:

《《的基本工作原》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、gdb的基本工作原理刘东雨丝风片@chinaunixmsn:yanbohuachuan@hotmail.com2007.12.15gdb简介gdb-GNUdebugger。gdb的主要功能–救死扶伤。gdb的主要用途–修复bug;分析程序结构。gdb官方网址-http://www.gnu.org/software/gdb/gdb.htmlgdb下载地址-http://ftp.gnu.org/gnu/gdb/gdb调试的组成架构gdb调试的工具–ptrace系统调用(1)ptrace系统调用的原型longptrace(enum__

2、ptrace_requestrequest,pid_tpid,void*addr,void*data);ptrace系统调用的简要说明ptrace系统调用提供了一种方法来让父进程可以观察和控制其它进程的执行,检查和改变其核心映像以及寄存器。gdb调试的工具–ptrace系统调用(2)ptrace系统调用的主要选项PTRACE_TRACEME表示本进程将被其父进程跟踪,交付给这个进程的所有信号(除SIGKILL之外),都将使其停止,父进程将通过wait()获知这一情况。PTRACE_ATTACHattach到一个指定的进程,使其成

3、为当前进程跟踪的子进程,子进程的行为等同于它进行了一次PTRACE_TRACEME操作。PTRACE_CONT继续运行之前停止的子进程。可同时向子进程交付指定的信号。gdb的三种调试方式(1)attach并调试一个已经运行的进程调试关系的建立过程:用户确定需要进行调试的进程id;运行gdb,输入attachpid,gdb对指定进程执行下述操作:ptrace(PTRACE_ATTACH,pid,0,0);gdb的三种调试方式(2)attach并调试一个已经运行的进程gdb的三种调试方式(3)运行并调试一个新的进程调试关系的建立过程

4、:运行gdb,通过命令行参数或file命令指定目标程序。输入run命令,gdb执行下述操作:通过fork()系统调用创建一个新进程;在新创建的子进程中执行下述操作:ptrace(PTRACE_TRACEME,0,0,0);在子进程中通过execv()系统调用加载用户指定的可执行文件。gdb的三种调试方式(4)运行并调试一个新的进程gdb的三种调试方式(5)远程调试目标机上新创建的进程gdb运行在调试机上,gdbserver运行在目标机上,两者之间的通信数据格式由gdb远程串行协议(RemoteSerialProtocol)定义。

5、RSP协议数据的基本格式为:“$..........#xx”。gdbserver的启动方式相当于运行并调试一个新创建的进程。gdb的三种调试方式(6)远程调试目标机上新创建的进程gdb调试的基础–信号(1)在使用参数为PTRACE_TRACEME或PTRACE_ATTACH的ptrace系统调用建立调试关系之后,交付给目标程序的任何信号(除SIGKILL之外)都将被gdb先行截获,或在远程调试中被gdbserver截获并通知gdb。gdb因此有机会对信号进行相应处理,并根据信号的属性决定在继续目标程序运行时是否将之前截获的信号实

6、际交付给目标程序。gdb调试的基础–信号(2)信号是实现断点功能的基础。以x86为例,向某个地址打入断点,实际上就是往该地址写入断点指令INT3,即0xCC。目标程序运行到这条指令之后就会触发SIGTRAP信号,gdb捕获到这个信号,根据目标程序当前停止位置查询gdb维护的断点链表,若发现在该地址确实存在断点,则可判定为断点命中。gdb暂停目标程序运行的方法是向其发送SIGSTOP信号。kill_lwp(process->head.id,SIGSTOP);gdb的同步模式和异步模式同步模式–gdb将以同步方式等待目标程序发生停止

7、事件,可称之为“死等”。因此,在目标程序运行期间,gdb不再扫描标准输入,用户也无法输入任何调试命令,要么等待目标程序发生调试事件而停止,要么通过“Ctrlc”来暂停目标程序的运行。异步模式–gdb不会同步等待目标程序发生停止事件,此类事件将通过异步上报的方式告知gdb。在目标程序运行期间,gdb仍将扫描标准输入,用户可以输入调试命令。使用同步模式还是异步模式由调试目标决定,在启动gdb之后通过target命令的参数给出。比如远程同步目标为targetremote…,而远程异步目标为targetasync…。gdb远程异步模式中

8、的事件循环(1)gdb远程异步模式的运转完全是由外部事件来激励的。共有两个外部事件源,一个是标准输入(用户输入的调试命令),一个是远程连接(gdbserver上报的异步事件)。负责对外部事件源进行检测和对事件进行分发处理的功能模块就是事件循环。建立调试连接之后,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。