现在的位置: 首页 > 综合 > 正文

Linux基础系列-DEBUG-2

2013年09月19日 ⁄ 综合 ⁄ 共 971字 ⁄ 字号 评论关闭

gdb能为我们做些什么:

之前有篇文章稍微介绍了点debug工具-gdb的工作原理。我们可能对gdb如何发挥作用有了一些了解,可问起gdb能为我们做些什么时,可能大多数人除了调试程序外,难以有一个具体点的回答,这篇文章也就权当做一个小总结,让我们除了知道搅拌机是如何工作的,还知道用搅拌机能解决些什么问题。

本文很多内容来自Jim Huang的happygdb,在此表示感谢。

 

1,一般的,gdb可以让我们了解程序在哪退出以及为何终止或退出

2,在开发过程中学会使用gdb,可以让我们更清楚的知道自己编写的程序的具体行为,提前发现问题。

3,gdb可以帮助我们获取到程序运行时的软硬件环境信息,借助于gdb的可爱的info等命令。

4,借助gdb,可以动态的改变执行流程,可以无需重新编译进行多种条件测试。

5,可以监看或修改一些程序执行时的数据,disp,watch。

6,可以查看汇编:dissamble main(或地址)

7,可以调试第三方的库(没有发布源码,没有调试信息)来定位问题及原因,si,ni

8,可以在gdb中直接修改编译代码,是调试过程如行云流水般… shell.

 

为什么要使用gdb:

很多仁兄(包括我,:()以前都认为printf可以解决很多问题,而且够直接,gdb使用起来感觉不好把握,而且命令繁多,有些繁琐。

诚然,printf在大部分情况下都是能够解决问题的。但是,我们知道不同工具有不同的应用场景,杀鸡不能用牛刀,杀牛也不能鸡刀…

1,使用gdb有我们都知道的效率问题,但这还不足以让我们的仁兄抛弃printf,因为当有问题出现时,往往直接使用printf比在回忆或查找gdb的用法来的更直接。

2,使用printf进行debug的话,我们需要增加debug code,在一些非实时应用里面,也许不会带来什么不好的应用,但在嵌入式开发中,在实时应用开发中,增加debug code会加大真实情况与调试模式的差异。

3,使用gdb会帮助我们非常快速的追踪代码的行为并重现问题,当然了,这个快速是在我们能玩转gdb的前提下,当我们知道gdb的魅力后,我们会有莫大的动力很快将它婉转的,就像追女孩子…

4,使用gdb可以让我们准确的掌握运行时的各种信息,在这调试潜伏的很深的问题时可能会给我们巨大的启发。printf要达到这个目的,需要一些深厚的功底的。

抱歉!评论已关闭.