- 1、本文档共73页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)