小应用大智慧-GDB调试
来源:互联网 发布:python 调用百度搜索 编辑:程序博客网 时间:2024/06/05 15:59
–GDB简介–
GDB是由开源组织发布的、在Linux系统下,基于命令行的强大的调试工具。
–GDB功能–
1. 启动被调试程序
2. 让被调试程序在指定位置停止
3. 当程序停住时,可以检查程序状态
–GDB调试流程–
1.首先查看Linux系统是否安装了GDB调试工具
在终端输入gdb,若下图则美安装gdb调试:
2.在终端输入sudo apt-get install gdb安装gdb
3.在终端输入gdb,进入gdb调试:
第一行可以查看到gdb的版本信息
4.以下面一个代码演示gdb操作流程:
test.c:
1 #include <stdio.h> 2 3 void myprint(long res) 4 { 5 printf("This is %d\n", res); 6 } 7 8 void main() 9 { 10 11 int i = 0; 12 long result = 0; 13 for(i=0;i<100;i++) 14 { 15 result += i; 16 } 17 myprint(result); 18 }
–编译可调试的可执行文件:
gcc -g test.c -o test
注:在编译过程中,若要使程序可调试,一定要加上-g
–启动GDB,进入GDB命令行下:
–在main函数位置设置断点
break(b) main
打印出在0x8048441地址位置处设置的断点,后面添加的文件名和行号。
–运行程序
使用run指令
此时,程序运行到了断点的位置停止了。
–使用list指令查看程序
–添加断点
使用函数名添加断点 :break 函数名
使用行号添加断点:break 行号
使用文件名和行号添加断点 break 文件名:行号
–查看所有的断点信息
info break
通过第一列可查看到断点号以及Type Disp Enb Addr 和在文件中的位置
–删除断点
delete
–next(n) 单步运行 不进入子函数只在当前函数中单步运行
–step(s)单步运行 但是可以跳到子函数中运行
–continue(c) 继续运行程序 这里值得是继续运行程序到下一个断点处,若没有下一个断点则运行完程序知道结束程序。
–print(p) 变量名 查看变量的值
–set var = value 设置变量的值
–quit(q)退出GDB
–总结一下常用GDB指令–
注:括号里是指令的简写形式,同指令的输出效果相同。
1. list(l):查看程序
2. break(b) 函数名 :在某个函数入口添加断点
3. break(b) 行号 : 在指定的行位置添加断点
4. break(b) 文件名 :行号 指定文件名和行号位置添加断点
5. info break :查看所有的断点的设置
6. delete 断点编号 : 删除断点
7. next(n) : 单步运行(不进入子函数)
8. step(s):单步运行(进入子函数)
9. continue(c) 变量名 : 继续运行程序
10. print(p)变量名:查看变量值
11. set var = value : 设置变量值
12. quit(q):退出GDB
- 小应用大智慧-GDB调试
- 小智慧大应用二
- 小应用大智慧学习笔记
- 小应用大智慧-Coredump故障分析
- 小动物大智慧
- 小故事大智慧
- 小问题,大智慧
- 小故事大智慧
- 小幽默大智慧
- 小故事大智慧
- 小常识,大智慧
- 小知识,大智慧!
- 小问题大智慧
- 小想法大智慧
- 小智慧,大感动
- 小生活,大智慧
- 小变量,大智慧
- 大智慧小问题
- java入门相关
- 剑指Offer面试题7(Java版):用两个栈实现队列与用两个队列实现栈
- 【剑指Offer面试题】 九度OJ1386:旋转数组的最小数字
- Android中Application类用法
- ajax的接受之页面,一定要有echo,html页面的返回函数success才能正常运行
- 小应用大智慧-GDB调试
- 台湾国立大学机器学习基石.听课笔记(第四讲): 机器学习的可行性
- Gym 100703F Game of words 动态规划
- 学习Emacs
- gdb 多线程
- 【Matlab学习笔记】【函数学习】nargin 参数
- 黑马程序员--iOS--C基础(二)
- 重学java23种设计模式(5)单例模式
- hdu-1421-搬寝室 线性dp