首页 > 代码库 > gdb调试

gdb调试

一、gdb常用命令:

1、程序控制:
List、wh:列表显示源代码。
run、continue:执行当前被调试的程序
kill:终止正在调试的程序。
quit:终止gdb
file:装入想要调试的可执行文件.
break:在代码里设置断点,程序执行到这里时挂起   
next:执行一行源代码但不进入函数内部。
step:执行一行源代码而且进入函数内部。
2、显示程序变量:
Watch 、display、print
查看指定地址处的内存单元的内容
更多的gdb调试命令请参考:
二、例

源程序

技术分享
#include <stdio.h>int func(int n){     int sum=0,i;     for(i=0; i<n; i++)     {        sum+=i;     }     return sum;}main(){     int i;     long result = 0;     for(i=1; i<=100; i++)      {        result += i;      }     printf("result[1-100] = %d \n", result );     printf("result[1-250] = %d \n", func(250) ); }
View Code

1.编译调试程序

$gcc –g test.c –o test

2.加载调试程序:

#gdb program 或 #gdb, (gdb) file program

3.列出源码:

list line1,line2 或 list function

 技术分享

4.管理断点

设置断点:break line 或者 b function

查看断点:info breakpoints

使断点失效:disable 断点序号

删除断点:delete 断点序号

5.执行程序

run:从程序开始执行,遇到用户设置的断点后会停下来

6.断点处处理:

continue:从断点处继续执行

n 或 next:执行一行源代码但不进入函数内部。

step :执行一行源代码而且进入函数内部。

7.显示变量值

print 变量:打印变量值

display 变量:显示变量值,每执行一次(gdb)命令都会显示该的变量的值

技术分享

watch 变量:监控变量,当程序调试运行时,若监控的变量值发生变化,就在变量变化处停止运行并显示变量信息

技术分享

8.查看内存单元值:

x /nfu <内存addr>

说明 :

1)x 是 examine 的缩写

2)n表示要显示的内存单元的个数

3)f表示显示方式, 可取如下值 :

 x,d,u,o,c,f 等同 c 中 print() 的格式含义

 t 按二进制格式显示变量

 i 指令地址格式 。

4)u表示一个地址单元的长度 :

 b表示单字节,

 h表示双字节,

 w表示四字节,

 g表示八字节

技术分享

gdb调试