第十一章 C语言-GDB调试.pptx

  1. 1、本文档共73页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言-gdb调试;培训大纲;背景概述 GNU Project Debugger、GNU Debugger GNU开源组织开发出来的程序调试工具 版本(必威体育精装版版本7.2) 系统(基于UNIX/Linux ) 多语言(C/C++等) ;原理概述 GDB作为父进程启动后,创建被调试程序为子进程,通过ptrace系统调用和一系列的信号交互来观察和控制被调试进程的运行,检查和修改其内存环境。 调试器(GDB)能让你观察另一个程序在执行时的内部活动,或程序出错时发生了什么。 GDB主要能为你做四件事(包括为了完成这些事而附加的功能),帮助你找出程序中的错误。 * 运行你的程序,设置所有的能影响程序运行的东西。 * 保证你的程序在指定的条件下停止。 * 当你程序停止时,让你检查发生了什么。 * 改变你的程序。那样你可以试着修正某个bug引起的问题,然后继续查找另一个bug.;功能概述 编译调试程序 $gcc –g hello.c –o hello GDB启动 gdb gdb [program_name] gdb [pid] gdb -c [core_file_name];功能概述 停住调试程序 Breakpoint : 代码段某个地址 WatchPoint: 数据段的变量 Catchpoint: 某个事件 Signal : 信号 Break thread :单个线程 ;功能概述 检查调试程序环境 查看源代码信息 查看内存信息 查看环境变量 ;功能概述 动态控制调试程序的执行 修改变量值 跳转执行 触发信号 强制函数调用 强制函数返回 ;功能概述 分析Core Core文件内容 Core文件的产生 产生Core文件的相关设置 ;;培训大纲;gdb调试的工具 – ptrace系统调用 ;gdb调试的工具 – ptrace系统调用 ;gdb的二种调试方式 (1);gdb的二种调试方式 (2);gdb的二种调试方式 (3);gdb的二种调试方式 (4);gdb调试的基础 – 信号 (1);gdb调试的基础 – 信号 (2);gdb指令级单步的实现 (1);gdb指令级单步的实现 (2);gdb next命令的实现 (1);gdb next命令的实现 (2);gdb next命令的实现 (3);gdb step、nexti、stepi命令的实现;gdb finish命令的实现;gdb until命令的实现;gdb对断点的处理 (1);gdb对断点的处理 (2);gdb对断点的处理 (3);gdb对断点的处理 (4);gdb对随机信号的处理;培训大纲;GDB基本命令;GDB基本命令;GDB基本命令;GDB基本命令;GDB基本命令;GDB基本命令;GDB基本命令;GDB基本命令;GDB基本命令;GDB基本命令;GDB基本命令;GDB基本命令;培训大纲;GDB高级命令;GDB高级命令;GDB高级命令;GDB高级命令;GDB高级命令;GDB高级命令;GDB高级命令;培训大纲;Coredump分析;Coredump分析;Coredump分析;培训大纲; 命令的简化、别名和自动补齐 tab键的使用、重复历史命令 Shell命令的使用 .gdbinit ; 原理:利用LINUX提供的CORE DUMP机制,当程序中出现内存错误时,会发生崩溃并产生核心文件(core文件)。使用gdb可以对产生的核心文件进行分析,找出程序是在什么时候崩溃的和在崩溃之前程序都做了什么。 操作步骤: 1)编译程序的时候带上-g调试选项,去出-O优化选项 2)生成core文件。一般来说,在默认情况下,在程序崩溃时,coer文件是不生成的(很多Linux发行版在默认时禁止生成核心文件)。所以,你必须修改这个默认选项,在命令行执行: ulimit –c unlimited 表示不限制生成core文件的大小。 ; 3)运行你的程序,不管用什么方法,使之重现Segmentation Fault错误。 4)这时,你会发现在你程序同一目录下,生成了一个文件名为core.***的文件,即核心文件。例如,”core.98345”这样的文件。 5)用gdb调试它。假设你的可执行程序名为hello,则在命令行执行: gdb hello core.98345 然后可能会出现一队信息: [oracle@yf1 mygrep0620]$ gdb mygrep_server core.14040 GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-42.el5) ********

文档评论(0)

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

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

1亿VIP精品文档

相关文档