Debugging with gdb Tenth Edition, for gdb version 7.5.50.20120806 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 ### GDB官方文档知识点概述 #### 一、GDB简介 - **定义**:GDB(GNU Debugger)是由GNU开源组织发布的强大程序调试工具,主要适用于UNIX及其类系统。 - **适用环境**:尽管现代开发环境如Visual Studio、Borland C++ Builder等提供了图形化的调试界面,但对于在UNIX环境下进行软件开发的人员来说,GDB因其丰富的功能而显得更为实用。 #### 二、GDB的历史与版本 - **版本**:本文档针对的是GDB 7.5.50.20120806版本。 - **贡献者**:包括Richard Stallman、Roland Pesch、Stan Shebs等在内的多位开发者为GDB做出了贡献。 - **版权**:GDB遵循GNU自由文档许可协议(GNU Free Documentation License, GFDL),允许用户自由复制、分发及修改文档,条件是在文档中保留“Free Software”和“Free Software Needs Free Documentation”这两个不变部分,并且在封底注明支持FSF(自由软件基金会)的相关信息。 #### 三、GDB的基本操作 ##### 1. 启动与退出 - **启动命令**:`gdb [options] [executable-file]`。可以通过指定选项来控制调试器的行为,例如选择调试的目标文件或设置调试模式。 - **文件选择**: - 可以通过命令行参数指定待调试的可执行文件。 - 支持通配符来匹配多个文件。 - **模式选择**:可以选择不同的调试模式,如单线程或多线程调试。 - **启动过程**:GDB在启动时会自动加载相关的符号表,并尝试解析可执行文件的信息以便进行调试。 - **退出命令**:使用`quit`命令退出GDB调试环境。 ##### 2. Shell命令集成 - GDB提供了一个简单的shell接口,允许用户在调试过程中执行外部命令,如查看文件内容或更改工作目录。 ##### 3. 输出记录 - 用户可以配置GDB将调试输出保存到文件中,这对于后续分析异常情况非常有用。 #### 四、GDB命令详解 ##### 1. 命令语法 - GDB支持丰富的命令集,每条命令都有特定的功能,如设置断点、继续执行、查看变量值等。 - 支持命令补全功能,帮助用户快速输入命令。 ##### 2. 获取帮助 - GDB内置了帮助系统,用户可以通过输入`help`加上命令名称来获取该命令的详细说明。 #### 五、程序运行控制 ##### 1. 编译准备 - 在使用GDB之前,需要确保编译目标程序时启用了调试信息的生成,通常通过添加`-g`标志实现。 - **启动程序**:通过`run`命令启动程序,GDB将监控程序的执行并提供控制权。 ##### 2. 参数与环境 - 用户可以指定程序的命令行参数和环境变量,这对于调试依赖于特定环境配置的应用非常重要。 - GDB还可以控制程序的工作目录以及标准输入输出的重定向。 ##### 3. 运行中的进程调试 - GDB支持调试已经运行的进程,这在处理生产环境中出现的问题时特别有用。 ##### 4. 多线程调试 - 随着多核处理器的普及,越来越多的应用程序采用多线程编程模型,GDB提供了对多线程应用的支持。 - 用户可以通过命令控制不同线程的执行状态,比如设置特定线程的断点。 #### 六、调试流程控制 ##### 1. 断点设置 - 断点是调试中最常用的功能之一,用于暂停程序执行以便进行检查。 - 支持多种类型的断点,包括常规断点、观察点(watchpoint)和捕捉点(catchpoint)。 - 用户可以设置条件断点,即只有满足特定条件时才触发断点。 #### 七、总结 - GDB作为一款功能强大的调试工具,在UNIX及其类系统上有着广泛的应用。 - 通过本文档的学习,用户可以深入了解GDB的各种特性,并掌握如何高效地利用它来进行程序调试。 - 对于那些希望深入研究GDB内部机制或贡献代码的开发者来说,GDB的开放源码特性也是一个巨大的优势。
剩余631页未读,继续阅读
- monsterkiller2013-01-09这个文档貌似不全
- imGala2013-03-18不全 谢谢啊
- 粉丝: 175
- 资源: 19
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- STM32 IAP固件升级程序源代码 STM32通过串口,接 收上位机、APP、或者服务器来的数据,更新设备的固件,也就是说上位机端(需用户自己编写)可以通过wifi转串口,网口转串口,GPRS转串
- OTA bootloader 嵌入式 上位机 升级解决方案, 安全加密,稳定升级 MIIOT ,米家OTA 经过可靠性测试
- BLDC无位置反电势过零点检测模型
- 三菱PLC功能块FB程序打包(共九个) 用的FB功能块写法,程序包括伺服FB和变频器通讯FB,编程方式非常清晰明了,程序都有注释、注释全面,包括三菱FX3U和Q系列plc 可借鉴、可做模板,这些程
- 远程PLC通讯编程调试监控方案,提供PLC安全验证型中转服务器全套方案,含服务器及客户端源代码,定制对接用户自己的WIFI串口或网口服务器设备,实现远程编程调试任务 支持上千路PLC设备的并发对接调
- 一屏多机控制设备程序,世界五百强企业大型设备系统,三天72小时产能,精益生产精确到小时,白班夜班精确控制 以太网通讯,CCLINK远程IO站 光纤总线通讯 两个QD75MH4, CPU采用日本三
- SJA1000 CAN总线verilog写的SJA1000 CAN总线控制器 程序使用三段式状态机,对于语句均有箱子的中文注释,同时还有相关的文档说明 可直接拿来使用,同时适合新手学习规范写作
- 台达DVP系列PLC与台达DTA温控器modbus通讯案例功能:采用台达DVP ES型号PLC,对台达DTA温控器通过485方式,modbus协议,进行温度的设定,温度探头型号设定,实际温度读取 硬
- 线性二自由度模型,对比carsim模型,运动学模型
- 污水处理或雨水回收泵站控制 1、采用昆仑通态7寸新版触摸屏mcgspro;2、plc采用西门子S7-200 224XP自带模拟量输入; 3、三个水泵,低液位停泵,中液位轮启一台泵,高液位启动两台泵,超
- 基于SVPWM的三电平逆变器MATLAB仿真系统 该仿真波形完美,搭建的仿真系统简洁有序
- 矩阵变器MATLAB仿真,其他仿真模型也可 图中为三相矩阵 变器仿真模型及其输入输出电流波形,仿真结果非常完美
- 基于SVPWM的两电平逆变器MATLAB仿真模型 仿真搭建的很有条理,不乱,程序可读性强,运行结果非常完美
- 三电平整流器输入不平衡控制MATLAB仿真模型 该仿真系统基 于模型预测算法,利用正负序分离技术实现网侧参考电流的计算,能适应网侧电压不平衡情况
- MATLAB程序,SMA-LSSVM,黏菌算法优化最小二乘支 持向量机 向量回归,最新算法,数据预测回归
- 西门子485 modbus RTU 200SmartModbusRTU通信S7-200Smart与最大32个从站RS 485主站程序,程序块自动轮询,无需编写轮询逻辑 程序为标准块间接寻址设计思路