这篇文章将gdb的简单使用,通过此篇文章你能学习到使用gdb进行调试程序

在Linux中编写程序时,如何进行程序的debug工作呢?今天来介绍下gdb这个工具,可以在Linux下直接man gdb查看帮助信息

(一)gdb命令介绍

常用命令:

命令命令缩写命令说明
runr开始运行程序,在第一个断点处停住
startst启动调试,在main函数中第一条语句停住
nextn执行下一行,不会进入函数内部
steps执行下一条语句,会进入函数
displaydisp查看某个变量,每次停下来都会显示它的值
infoi查看程序信息
breakb设置断点
printp打印变量值
continuec继续运行程序
set var name=value设置变量的值
listl显示程序源码,默认显示10行
killk终止程序调试
watch监视变量值的变化
breaktracebt查看函数调用信息
quitq退出gdb环境

基础操作:
(1)编译调试程序 :gcc -g xxx.c -o xxx
(2)进入gdb环境 : gdb xxx
(3)根据需求执行上面的命令
(4) 退出gdb

(二)实例运行

test.c

#include <stdio.h>

int main(int argc, char *argv[])
{
   int a=0,b=0,c=0;
   a=1;
   b=2;
   c=a+b;
   printf("a=%d,b=%d,c=%d\n",a,b,c);
   return 0;
}

zhixia# gcc -g test.c -o test
zhixia# gdb test
通过上面的操作已经进入了gdb环境了
输入list查看代码:从上次位置开始显示,默认一次显示10行

(gdb) list
1	#include <stdio.h>
2	
3	int main(int argc, char *argv[])
4	{
5	   int a=0,b=0,c=0;
6	   a=1;
7	   b=2;
8	   c=a+b;
9	   printf("a=%d,b=%d,c=%d\n",a,b,c);
10	   return 0;
(gdb) 

设置断点:执行到此位置会停下来
break line/function/
查看断点信息 : info b
删除断点:delete breakpoints 断点号
使能断点: enable 断点编号
失能断点: disable 断点编号

(gdb) break 7
Breakpoint 1 at 0x400551: file test.c, line 7.  //断点编号是1
(gdb) r
Starting program: /root/test/test 

Breakpoint 1, main (argc=1, argv=0x7fffffffdf78) at test.c:7
7	   b=2;

显示变量值:display

(gdb) display a
1: a = 1
(gdb) 

单步调试命令:next/step
step n,next n 表示连续单步执行n条指令,如果期间遇到断点,则停下来

(gdb) next
8	   c=a+b;
1: a = 1
(gdb) step
9	   printf("a=%d,b=%d,c=%d\n",a,b,c);
1: a = 1
(gdb) 

打印变量信息print

(gdb) p a
$1 = 1
(gdb) 

set var name=value
在程序运行中动态改变变量的值

(gdb) set var a=4
(gdb) p a
$2 = 4
(gdb) 
Logo

更多推荐