小应用大智慧-GDB调试

来源:互联网 发布:python 调用百度搜索 编辑:程序博客网 时间:2024/06/05 15:59

–GDB简介–
GDB是由开源组织发布的、在Linux系统下,基于命令行的强大的调试工具。
–GDB功能–
1. 启动被调试程序
2. 让被调试程序在指定位置停止
3. 当程序停住时,可以检查程序状态

–GDB调试流程–
1.首先查看Linux系统是否安装了GDB调试工具
在终端输入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) 单步运行 不进入子函数只在当前函数中单步运行
next

–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

0 0
原创粉丝点击