linux开发环境中的调试工具,GDB调试工具的实践

GDB是GNU Debuger的简称,是GNU发布的一款unix下应用程序调试工具。它被广泛使用在各个产家各种应用中。GDB和所有常用的调试工具一样,它的主要功能有:监视变量的值、设置断点及单步执行。

注意,在源程序编译时,要使用gcc -g 或 cc -g 或 g++ -g将源程序编译成可执行文件,然后才能使用gdb进行调试。只有这样,生成的可执行文件才包含调试信息。

参考别人的写一个简单的c程序,在linux下使用gcc编译成可执行文件,然后使用gdb进行调试。

程序源代码如下

#include

intfunc(intn)

{

intsum=0,i;

for(i=0; i

{

sum+=i;

}

returnsum;

}

intmain()

{

inti;

longresult = 0;

for(i=1; i<=100; i++)

{

result += i;

}

printf("result[1-100] = %d \n\r", result );

printf("result[1-250] = %d \n\r", func(250) );

}

使用gcc -g变成生成可执行文件miki,方法为 gcc -g miki.c  -o miki

使用gdb开始调试miki应用,如下:

01.$gdb miki

02.GNU gdb (GDB) CentOS (7.0.1-42.el5.centos)

03.Copyright (C) 2009 Free Software Foundation, Inc.

04.License GPLv3+: GNU GPL version 3 or later

05.This is free software: you are free to change and redistribute it.

06.There is NO WARRANTY, to the extent permitted by law.  Type "show copying"

07.and "show warranty" for details.

08.This GDB was configured as "x86_64-RedHat-linux-gnu".

09.For bug reporting instructions, please see:

10.…

11.Reading symbols from /u01/home/Oracle/miki…done.

12.(gdb) l 1

13.1      #include

14.2

15.3      int func(int n)

16.4      {

17.5              int sum=0,i;

18.6              for(i=0; i

19.7              {

20.8                      sum+=i;

21.9              }

22.10              return sum;

23.(gdb)

24.11      }

25.12

26.13

27.14      main()

28.15      {

29.16              int i;

30.17              long result = 0;

31.18              for(i=1; i<=10; i++)

32.19              {

33.20                      result += i;

34.(gdb)

35.21              }

36.22

37.23            printf("result[1-10] = %d \n\r", result );

38.24            printf("result[1-5] = %d \n\r", func(5) );

39.25      }

40.(gdb)

41.Line number 26 out of range; miki.c has 25 lines.

42.(gdb) r

43.Starting program: /u01/home/oracle/miki

44.warning: no loadable sections found in added symbol-file system-supplied DSO at 0x2aaaaaaab000

45.result[1-10] = 55

46.result[1-5] = 10

47.Program exited with code 023.

l 1        表示显示源码第一行开始的10行记录,可以写成list 1

l          表示显示源码中间的前后10行记录,可以写成list

空白回车    表示重复上一次命令操作

r            表示程序开始运行

01.(gdb) b 23

02.Breakpoint 1 at 0x4004f2: file miki.c, line 23.

03.(gdb) info b

04.Num    Type          Disp Enb Address            What

05.1      breakpoint    keep y  0x00000000004004f2 in main at miki.c:23

06.(gdb) i b

07.Num    Type          Disp Enb Address            What

08.1      breakpoint    keep y  0x00000000004004f2 in main at miki.c:23

09.(gdb) break func

10.Breakpoint 2 at 0x40049f: file miki.c, line 5.

11.(gdb) info break

12.Num    Type          Disp Enb Address            What

13.1      breakpoint    keep y  0x00000000004004f2 in main at miki.c:23

14.2      breakpoint    keep y  0x000000000040049f in func at miki.c:5

15.

16.

17.(gdb) i b

18.Num    Type          Disp Enb Address            What

19.1      breakpoint    keep y  0x00000000004004f2 in main at miki.c:23

20.2      breakpoint    keep y  0x000000000040049f in func at miki.c:5

21.3      breakpoint    keep y  0x000000000040049f in func at miki.c:2

22.(gdb) d 2

23.(gdb) i b

24.Num    Type          Disp Enb Address            What

25.1      breakpoint    keep y  0x00000000004004f2 in main at miki.c:23

26.3      breakpoint    keep y  0x000000000040049f in func at miki.c:2

27.(gdb) delete 3

28.(gdb) i b

29.Num    Type          Disp Enb Address            What

30.1      breakpoint    keep y  0x00000000004004f2 in main at miki.c:2

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值