[计算机软件及应用]C语言-GDB调试.ppt

  1. 1、本文档共73页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机软件及应用]C语言-GDB调试

C语言-gdb调试 上海****通信有限责任公司 Mr Jim(seniordba@) 2013-02 培训大纲 一、概述 二、gdb实现原理 三、gdb基本命令 四、gdb高级命令 五、Coredump分析 六、gdb使用技巧 七、常见问题 背景概述 GNU Project Debugger、GNU Debugger GNU开源组织开发出来的程序调试工具 版本(最新版本7.2) 系统(基于UNIX/Linux ) 多语言(C/C++等) GDB概述 原理概述 GDB作为父进程启动后,创建被调试程序为子进程,通过ptrace系统调用和一系列的信号交互来观察和控制被调试进程的运行,检查和修改其内存环境。 调试器(GDB)能让你观察另一个程序在执行时的内部活动,或程序出错时发生了什么。 GDB主要能为你做四件事(包括为了完成这些事而附加的功能),帮助你找出程序中的错误。 * 运行你的程序,设置所有的能影响程序运行的东西。 * 保证你的程序在指定的条件下停止。 * 当你程序停止时,让你检查发生了什么。 * 改变你的程序。那样你可以试着修正某个bug引起的问题,然后继续查找另一个bug. GDB概述 功能概述 编译调试程序 $gcc –g hello.c –o hello GDB启动 gdb gdb [program_name] gdb [pid] gdb -c [core_file_name] GDB概述 功能概述 停住调试程序 Breakpoint : 代码段某个地址 WatchPoint: 数据段的变量 Catchpoint: 某个事件 Signal : 信号 Break thread :单个线程 GDB概述 功能概述 检查调试程序环境 查看源代码信息 查看内存信息 查看环境变量 GDB概述 功能概述 动态控制调试程序的执行 修改变量值 跳转执行 触发信号 强制函数调用 强制函数返回 GDB概述 功能概述 分析Core Core文件内容 Core文件的产生 产生Core文件的相关设置 GDB概述 GDB简介 gdb - GNU debugger。 gdb的主要功能 – 救死扶伤。 gdb的主要用途 – 修复bug;分析程序结构。 gdb官方网址 - /software/gdb/gdb.html gdb下载地址 - /gnu/gdb/ 培训大纲 一、概述 二、gdb实现原理 三、gdb基本命令 四、gdb高级命令 五、Coredump分析 六、gdb使用技巧 七、常见问题 gdb调试的工具 – ptrace系统调用 ptrace系统调用的原型 long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data); ptrace系统调用的简要说明 ptrace系统调用提供了一种方法来让父进程可以观察和控制其它进程的执行,检查和改变其核心映像以及寄存器。 gdb调试的工具 – ptrace系统调用 ptrace系统调用的主要选项 PTRACE_TRACEME 表示本进程将被其父进程跟踪,交付给这个进程的所有信号(除SIGKILL之外),都将使其停止,父进程将通过wait()获知这一情况。 PTRACE_ATTACH attach到一个指定的进程,使其成为当前进程跟踪的子进程,子进程的行为等同于它进行了一次PTRACE_TRACEME操作。 PTRACE_CONT 继续运行之前停止的子进程。可同时向子进程交付指定的信号。 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

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档