电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>C语言|源代码>gdb调试器解析

gdb调试器解析

2017-10-18 | rar | 0.3 MB | 次下载 | 1积分

资料介绍

 3.4 gdb调试器
  调试是所有程序员都会面临的问题。如何提高程序员的调试效率,更好、更快地定位程序中的问题从而加快程序开发的进度,是大家都很关注的问题。就如读者熟知的Windows下的一些调试工具,如Visual Studio自带的设置断点、单步跟踪等,都受到了广大用户的赞赏。那么,在Linux下有什么很好的调试工具呢?
  gdb调试器是一款GNU开发组织并发布的UNIX/Linux下的程序调试工具。虽然,它没有图形化的友好界面,但是它强大的功能也足以与微软的Visual Studio等工具媲美。下面就请跟随笔者一步步学习gdb调试器。
  3.4.1 gdb使用流程
  这里给出了一个短小的程序,由此带领读者熟悉gdb的使用流程。建议读者能够动手实际操作一下。
  首先,打开Linux下的编辑器vi或者emacs,编辑如下代码(由于为了更好地熟悉gdb的操作,笔者在此使用vi编辑,希望读者能够参见3.3节中对vi的介绍,并熟练使用vi)。
  /*test.c*/
  #include 《stdio.h》
  int sum(int m);
  int main()
  {
  int i, n = 0;
  sum(50);
  for(i = 1; i《= 50; i++)
  {
  n += i;
  }
  printf(“The sum of 1-50 is %d \n”, n );
  }
  int sum(int m)
  {
  int i, n = 0;
  for (i = 1; i 《= m; i++)
  {
  n += i;
  printf(“The sum of 1-m is %d\n”, n);
  }
  }
  在保存退出后首先使用gcc对test.c进行编译,注意一定要加上选项“-g”,这样编译出的可执行代码中才包含调试信息,否则之后gdb无法载入该可执行文件。
  [root@localhost gdb]# gcc -g test.c -o test
  虽然这段程序没有错误,但调试完全正确的程序可以更加了解gdb的使用流程。接下来就启动gdb进行调试。注意,gdb进行调试的是可执行文件,而不是如“.c”的源代码,因此,需要先通过gcc编译生成可执行文件才能用gdb进行调试。
  [root@localhost gdb]# gdb test
  GNU gdb Red Hat Linux (6.3.0.0-1.21rh)
  Copyright 2004 Free Software Foundation, Inc.
  GDB is free software, covered by the GNU General Public License, and you are
  welcome to change it and/or distribute copies of it under certain conditions.
  Type “show copying” to see the conditions.
  There is absolutely no warranty for GDB. Type “show warranty” for details.
  This GDB was configured as “i386-redhat-linux-gnu”。..Using host libthread_db library “/lib/libthread_db.so.1”。
  (gdb)
  可以看出,在gdb的启动画面中指出了gdb的版本号、使用的库文件等信息,接下来就进入了由“(gdb)”开头的命令行界面了。
  (1)查看文件。
  在gdb中键入“l”(list)就可以查看所载入的文件,如下所示。
  注意在gdb的命令中都可使用缩略形式的命令,如“l”代表“list”,“b”代表“breakpoint”,“p”代表“print”等,读者也可使用“help”命令查看帮助信息。
  (gdb) l
  1 #include 《stdio.h》
  2 int sum(int m);
  3 int main()
  4 {
  5 int i,n = 0;
  6 sum(50);
  7 for(i = 1; i 《= 50; i++)
  8 {
  9 n += i;
  10 }
  (gdb) l
  11 printf(“The sum of 1~50 is %d \n”, n );
  12
  13 }
  14 int sum(int m)
  15 {
  16 int i, n = 0;
  17 for(i = 1; i 《= m; i++)
  18 {
  19 n += i;
  20 }
  21 printf(“The sum of 1~m is = %d\n”, n);
  20 }
  可以看出,gdb列出的源代码中明确地给出了对应的行号,这样就可以大大地方便代码的定位。
  (2)设置断点。
  设置断点是调试程序中一个非常重要的手段,它可以使程序运行到一定位置时暂停。因此,程序员在该位置处可以方便地查看变量的值、堆栈情况等,从而找出代码的症结所在。
  在gdb中设置断点非常简单,只需在“b”后加入对应的行号即可(这是最常用的方式,另外还有其他方式设置断点),如下所示:
  (gdb) b 6
  Breakpoint 1 at 0x804846d: file test.c, line 6.
  要注意的是,在gdb中利用行号设置断点是指代码运行到对应行之前将其停止,如上例中,代码运行到第6行之前暂停(并没有运行第6行)。
  (3)查看断点情况。
  在设置完断点之后,用户可以键入“info b”来查看设置断点情况,在gdb中可以设置多个断点。
  (gdb) info b
  Num Type Disp Enb Address What
  1 breakpoint keep y 0x0804846d in main at test.c:6
  用户在断点键入“backrace”(只输入“bt”即可)可以查到调用函数(堆栈)的情况,这个功能在程序调试之中使用非常广泛,经常用于排除错误或者监视调用堆栈的情况。
下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1电子电路原理第七版PDF电子教材免费下载
  2. 0.00 MB  |  1490次下载  |  免费
  3. 2单片机典型实例介绍
  4. 18.19 MB  |  92次下载  |  1 积分
  5. 3S7-200PLC编程实例详细资料
  6. 1.17 MB  |  27次下载  |  1 积分
  7. 4笔记本电脑主板的元件识别和讲解说明
  8. 4.28 MB  |  18次下载  |  4 积分
  9. 5开关电源原理及各功能电路详解
  10. 0.38 MB  |  10次下载  |  免费
  11. 6基于AT89C2051/4051单片机编程器的实验
  12. 0.11 MB  |  4次下载  |  免费
  13. 7蓝牙设备在嵌入式领域的广泛应用
  14. 0.63 MB  |  3次下载  |  免费
  15. 89天练会电子电路识图
  16. 5.91 MB  |  3次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234313次下载  |  免费
  3. 2PADS 9.0 2009最新版 -下载
  4. 0.00 MB  |  66304次下载  |  免费
  5. 3protel99下载protel99软件下载(中文版)
  6. 0.00 MB  |  51209次下载  |  免费
  7. 4LabView 8.0 专业版下载 (3CD完整版)
  8. 0.00 MB  |  51043次下载  |  免费
  9. 5555集成电路应用800例(新编版)
  10. 0.00 MB  |  33562次下载  |  免费
  11. 6接口电路图大全
  12. 未知  |  30320次下载  |  免费
  13. 7Multisim 10下载Multisim 10 中文版
  14. 0.00 MB  |  28588次下载  |  免费
  15. 8开关电源设计实例指南
  16. 未知  |  21539次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935053次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537791次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420026次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234313次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233045次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191183次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183277次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138039次下载  |  免费