- 1、本文档共73页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- [计算机硬件及网络]C++面向对象程序设计教程下.ppt
- [计算机硬件及网络]CH7 常用接口芯片.ppt
- [计算机硬件及网络]AppDirector负载均衡器指导书21X.pdf
- [计算机硬件及网络]chapter5 Multisim在模拟电子线路中的应用.ppt
- [计算机硬件及网络]chapter6 放大器的频率特性.ppt
- [计算机硬件及网络]ch_8《例说8051》第8章课件.ppt
- [计算机硬件及网络]DHCP服务器设置.ppt
- [计算机硬件及网络]DSP十字路口交通灯程序代码还有图哦.doc
- [计算机硬件及网络]DSP精讲课件 第7章 C54x片内外设、接口及应用.ppt
- [计算机硬件及网络]EMC新品plex介绍.ppt
- 2025年网络文学平台版权运营模式创新与版权保护体系构建.docx
- 数字藏品市场运营策略洞察:2025年市场风险与应对策略分析.docx
- 全球新能源汽车产业政策法规与市场前景白皮书.docx
- 工业互联网平台安全标准制定:安全防护与合规性监管策略.docx
- 剧本杀剧本创作审核标准2025年优化与行业自律.docx
- 2025年新能源电动巡逻车在城市安防中的应用对城市环境的影响分析.docx
- 全渠道零售案例精选:2025年行业创新实践报告.docx
- 2025年网约车司乘纠纷处理机制优化与行业可持续发展报告.docx
- 2025年宠物烘焙食品市场法规政策解读:合规经营与风险规避.docx
- 2025年宠物行业数据安全监管政策影响分析报告.docx
文档评论(0)