电子发烧友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东芝BiCD集成电路硅单片TB67S109AFNAG数据手册
  2. 1.93 MB   |  5次下载  |  免费
  3. 2SP3060A/30120A/30160A/30320A/30520A系列数字合成扫频仪使用说明书
  4. 4.16 MB   |  3次下载  |  1 积分
  5. 3具有双通道 DC-DC转换器、由串行接口控制的9通道电机驱动器TPIC2010数据表
  6. 1.15MB   |  2次下载  |  免费
  7. 4USB Type-C PD快充协议智能触发芯片FS312B数据手册
  8. 0.75 MB   |  1次下载  |  免费
  9. 5USB Type_C PD快充协议智能触发芯片FS8025B数据手册
  10. 1.29 MB   |  1次下载  |  免费
  11. 6触摸按键PCB 设计要点V01
  12. 1.42 MB  |  1次下载  |  免费
  13. 75V升压充电两串锂电池充电管理IC FS4058数据手册
  14. 2.98 MB   |  次下载  |  免费
  15. 8真关断同步升压IC FS2009数据手册
  16. 2.08 MB   |  次下载  |  免费

本月

  1. 1DCDC原理详解
  2. 0.98 MB   |  65次下载  |  免费
  3. 2allegro快速入门教程
  4. 1.98 MB   |  36次下载  |  免费
  5. 3FU-7(807)胆机原理图
  6. 11.93 MB   |  25次下载  |  1 积分
  7. 4用于汽车应用的高压电源管理IC TPS65311-Q1数据表
  8. 1.05MB   |  22次下载  |  免费
  9. 5电子元件基础知识介绍
  10. 8.76 MB   |  15次下载  |  2 积分
  11. 6华为海思Ascend 310芯片的资料说明
  12. 0.12 MB   |  10次下载  |  10 积分
  13. 7GD32F10x系列MCU用户手册
  14. 11.5MB   |  9次下载  |  免费
  15. 86A 输出电流同步降压稳压器TPS65286数据表
  16. 2.05MB   |  6次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935083次下载  |  免费
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420045次下载  |  免费
  5. 3Altium DXP2002下载入口
  6. 未知  |  233067次下载  |  免费
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191308次下载  |  免费
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183308次下载  |  免费
  11. 6labview8.5下载
  12. 未知  |  81567次下载  |  免费
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73785次下载  |  免费
  15. 8NI LabVIEW中实现3D视觉的工具和技术
  16. 未知  |  70088次下载  |  免费