在了解gdb可以做什么,怎么做之前,让我们先来看看为什么要用gdb,或者说对调试工具有什么期望。
为了查看程序运行过程中的状态,我们就希望程序能在适当的位置或者在一定的条件下能够暂停运行;为此,调试工具提供了断点、查看变量/表达式、显示程序栈等功能。看了某个点的“内幕”后,我们还期望更多,所以要能控制程序运行才行,这就要求断点、继续运行、单步(多步)运行、进入函数运行等功能,在某些情况下,还需要通过修改当前的执行环境(变量等)来达到期望的执行顺序。也就是说,光看着是不够的,还需要能改才行。 【相关文章:LINUX中软件RAID的创建过程】
一般我们使用gdb(或其他调试工具)是为了发现程序bug,更经常地是在已知程序有错的情况下定位bug。既然这样,我们就需要跟踪程序的执行情况,查看程序执行是否正常,当然这就需要有个让我们与执行程序交互的环境,调试工具提供一个能让程序在你的掌控下执行,并让你能够查看一些执行过程中的“内幕信息”的环境。 【扩展阅读:SLES 8 rlogin 超级用户登录】
一般我们使用gdb(或其他调试工具)是为了发现程序bug,更经常地是在已知程序有错的情况下定位bug。既然这样,我们就需要跟踪程序的执行情况,查看程序执行是否正常,当然这就需要有个让我们与执行程序交互的环境,调试工具提供一个能让程序在你的掌控下执行,并让你能够查看一些执行过程中的“内幕信息”的环境。 【扩展信息:think in recent thin】
一、引言
在了解gdb可以做什么,怎么做之前,让我们先来看看为什么要用gdb,或者说对调试工具有什么期望。
为了查看程序运行过程中的状态,我们就希望程序能在适当的位置或者在一定的条件下能够暂停运行;为此,调试工具提供了断点、查看变量/表达式、显示程序栈等功能。看了某个点的“内幕”后,我们还期望更多,所以要能控制程序运行才行,这就要求断点、继续运行、单步(多步)运行、进入函数运行等功能,在某些情况下,还需要通过修改当前的执行环境(变量等)来达到期望的执行顺序。也就是说,光看着是不够的,还需要能改才行。
理解了这些问题后,我们就明白gdb的各个功能的用意了,自然也就明白该如何使用调试工具了。当然,要让gdb有效的发挥作用,还是需要一定的经验与技巧,而这主要靠实践,学习资料(包括本文)充其量只能帮你一把(小心别让它帮倒忙)。
总而言之,我们首先要明白使用调试工具的目的与用意,才能理解它的各项功能,才能借助它快速有效的发现问题;否则,即使工具再强大,你也不知道该如何使用才好。
另外要多结合使用代码检视、运行日志、测试工具等方法来发现潜在的问题,提供程序的质量。这些问题将在另文探讨,先做个广告。
二、gdb能做什么gdb可以用来调试c、c++、modula-2的程序。一般来说,gdb能做的事大致可以分为四类:
1、启动程序,按指定的方式执行程序。
2、在指定条件下使程序暂停. 3、当程序被停住时,可以检查此时你的程序中的变化。 4、改变程序中的变量或执行顺序来试验。 三、gdb使用概述首先要了解的是gdb的help命令,因为你可能记不住各个命令的语法与用途,但只要能正确使用help命令,你就不需要任何其它的gdb资料。
启动gdb后,输入help
[eric@linux eric]$ gdb
gnu gdb red hat linux (5.3.90-0.20030710.40rh) copyright 2003 free software foundation, inc. ... 下一页