Linux应用的调试GDB使用方法GDB常用命令

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

调试演示
1. 使用gcc命令进行编译(务必需要-g选项) gcc –g –o buffer buffer.c 2. 启动gdb进行调试 gdb buffer 3. 使用run命令运行程序 r (or run) 4. 根据逻辑找出问题,可附加使用list查看 代码 l (or list)
它使你能监视你程序中变量的值. 它使你能设置断点以使程序在指定的代码行
上停止执行. 它使你能一行行的执行你的代码.
GDB的使用方法

GDB的命令格式
gdb [option] [executable-file[core-file or
process-id]]
GDB的常用命令

1/4
变量、参数的设置与查看 • list:列出产生执行文件的源代码的一部分. • watch 变量名:当变量改变时,显示变量 修改前后的值; • print 变量名:打印变量值; • whatis 变量名或函数名:显示变量或函数 的类型; • Ptype:显示数据结构的定义; • set args:设置程序的运行参数; • Show args:显示程序的运行参数;
enable breakpoint 断点号:允许指定的断点
GDB的常用命令

3/4
程序的控制指令
run:程序开始执行,一直运行到断点才终止; continue:运行到下一个断点; next:运行下一条指令; step:运行下一条指令;
GDB的常用命令

4/4


加载和退出命令
gdb filename:在shell下直接加载文件进行调
试 file filename:在gdb下通过file命令加载程序进 行调试 kill:终止正在调试的程序 quit:退出gdb调试环境
GDB的常用命令

2/4
断点控制
break 函数名或行号[if 条件] Info break :显示程序中设置的断点; delete breakpoint 断点号:删除指定的断点 clear 断点号:作用同上 disable breakpoint 断点号:禁用指定的断点
调试演示
10. 使用bt命令查看栈信息 11. 使用info b (or break)查看断点信息 12. 使用delete或者clear命令清除断点 13. kill杀死当前正在调试的程序进程 14. 使用quit命令推出gdb调试环境

目录
调试概述 GDB简介 调试演示 课程实践

Why debug?
软件开发的一个很重要的工作是测试程序和排
除错误。特别是在一个大程序中,编程错误是 不可避免的。程序可能会返回错误的结果,因 为无穷循环而死机,甚至因为内存操作不当导 致系统崩溃。因此需要通过调试来找到这些错 误并消灭它们~
调试概述

2/2
调试前提
安装GDB软件包 ○ 程序参考手册网址: http://www.gnu.org/software/gdb/documention

调试演示

5. 使用break命令设置断点
b (or break) lineNumber or functionName
6. 使用run命令运行程序 r (or run) 7. 使用watch命令指定需要跟踪的变量 watch Buffer 8. 按照终端提示输入input字符串,其他gdb 模式下输入n (or next)或者回车继续执行 9. 重复8,找出症结所在
○ 程序安装网址:
http://www.gnu.org/software/gdb/download
编译时加上-g选项
目录
调试概述 GDB简介 调试演示 课程实践

GDB简介
GDB的概述 GDB的使用方法 GDB常用命令

GDB的概述

Gdb是一款GNU开发组织并发布的 UNIX/Linux下的程序调试工具。它使你 能在程序运行时观察程序的内部结构和内 存的使用情况. 以下是gdb 所提供的一些 功能:
}
调试演示
#define MAXLINE_LENGTH 80 char Buffer[MAXLINE_LENGTH]; char * readString(void) { int nextInChar; int nextLocation; printf("Input> "); nextLocation = 0; while ((nextInChar = getchar()) != '\n' && nextInChar != EOF) { Buffer[nextLocation++] = nextInChar; } return Buffer; }
Lecturer: xxx Assistant:xx 4st @ 2011-03-22 xxxxx
目录
调试概述 GDB简介 调试演示 课程实践

目录
调试概述 GDB简介 调试演示 课程实践

调试概述

1/2
What is debug?
调试,是发现和减少计算机程序或电子仪器设 备中程序错误的一个过程
目录
调试概述 GDB简介 Hale Waihona Puke Baidu 调试演示 课程实践

调试演示
char * readString(void) { int nextInChar; int nextLocation;


printf("Input> "); nextLocation = 0; while ((nextInChar = getchar()) != '\n' && nextInChar != EOF) { Buffer[nextLocation++] = nextInChar; } return Buffer;

课程实践
使用gdb调试以下程序代码 1. 对出现出错信息的部分进行截图 2. 修改完善源代码 3. 使用gdb调试修改后的代码,给出错误 修改后部分的调试截图(与原图对比) 4. 说明程序出现错误的原因以及解决方法
课程实践
#include <stdio.h> #include <unistd.h> #define ARRAY_SIZE 10 void natural_numbers (void) { int i; int array[ARRAY_SIZE]; i = 1; while (i <= ARRAY_SIZE) { array[i] = i - 1; sleep(1); /* print slowly to see clearly */ printf("array[%d] = %d\n", i, array[i]); i = i + 1; } }
相关文档
最新文档