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表示八字节

技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。