首页 > 代码库 > 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) ); }
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:从断点处继续执行
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调试