Linux中国  设为主页
 收藏本站
 
当前位置: > 首页 ->Linux技术 ->入门与提高 ->新手看招:调试工具GDB基本知识全接触
  相关分类: 
入门与提高
系统管理
网络应用
嵌入式系统
内核研究
服务器相关
发行版专区
Linux程序设计
Linux安全
BSD相关
桌面应用
  站内搜索: 
热门文章排行
热门文章排行 新手入门 Linux菜鸟必学的60个命令(04-11)
Linux操作系统下安装QQ最简单的方法(04-11)
即时通讯无界限 LumaQQ的安装和使用(04-11)
Linux 2.6.19.x内核编译配置选项简介(05-09)
Linux版本大全,Linux发行版知多少。(05-06)
精采文章排行
精采文章排行 Ubuntu 7.10扩展Linux系统的多媒体应(01-07)
新手学堂:Samba服务器安装配置过程(01-07)
最简单的Linux系统上的pptpd服务器安(01-07)
新手看招:Linux系统的股票行情分析(01-07)
新手学堂:Linux系统的开机程序执行(01-07)
  ·新手学堂:Samba服务器安装配置过程介绍 ·最简单的Linux系统上的pptpd服务器安装 ·新手看招:Linux系统的股票行情分析软件 ·新手学堂:Linux系统的开机程序执行顺序 ·在Linux操作系统下安装杀毒软件AntiVir ·利用Boot Manager让Vista与Linux双启动 ·如何制作Ubuntu Linux操作系统的本地源 ·2007年度开源10大事件微软起诉Linux居首 ·Ubuntu7.10性能大幅提升要与Vista决高下

新手看招:调试工具GDB基本知识全接触

作者:Webmaster   来源:   点击:   日期:2007-06-21 [收藏] [投稿]

  IE是否经常中毒?推荐您

1、GDB 是什么?

GDB(GNU symbolic debugger)简单地说就是一个调试工具。它是一个受通用公共许可证即GPL保护的自由软件。

2、GDB特性

象所有的调试器一样,GDB可以让你调试一个程序,包括让程序在你希望的地方停下,此时你可以查看变量,寄存器,内存及堆栈。更进一步你可以修改变量及内存值。GDB是一个功能很强大的调试器,它可以调试多种语言。在此我们仅涉及C和C++的调试,而不包括其它语言。还有一点要说明的是,GDB是一个调试器,而不象VC一样是一个集成环境。你可以使用一些前端工具如XXGDB,DDD等。他们都有图形化界面,因此使用更方便,但它们仅是GDB的一层外壳。因此,你仍应熟悉GDB命令。事实上,当你使用这些图形化界面时间较长时,你才会发现熟悉GDB命令的重要性。下面我们将结合简单的例子,来介绍GDB的一些重要的常用命令。在你调试你的程序之前,当你编译你的源程序时,不要忘了-g选项或其它相应的选项,才能将调试信息加到你要调试的程序中。例如:gcc -g -o hello hello.c 。

3、GDB常用命令简介

GDB的命令很多,本文不会全部介绍,仅会介绍一些最常用的。在介绍之前,先介绍GDB中的一个非常有用的功能:补齐功能。它就如同Linux下SHELL中的命令补齐一样。当你输入一个命令的前几个字符,然后输入TAB键,如果没有其它命令的前几个字符与此相同,SHELL将补齐此命令。如果有其它命令的前几个字符与此相同,你会听到一声警告声,再输入TAB键,SHELL将所有前几个字符与此相同的命令全部列出。而GDB中的补齐功能不仅能补齐GDB命令,而且能补齐参数。

本文将先介绍常用的命令,然后结合一个具体的例子来演示如何实际使用这些命令。下面的所有命令除了第一条启动GDB命令是在SHELL下输入的,其余都是GDB内的命令。大部分GDB内的命令都可以仅输入前几个字符,只要不与其它指令冲突。如quit可以简写为q,因为以q打头的命令只有quit。List可以简写为l,等等

3.1 启动GDB

你可以输入GDB来启动GDB程序。GDB程序有许多参数,在此没有必要详细介绍,但一个最为常用的还是要介绍的:如果你已经编译好一个程序,我们假设文件名为hello,你想用GDB调试它,可以输入gdb hello来启动GDB并载入你的程序。如果你仅仅启动了GDB,你必须在启动后,在GDB中再载入你的程序。

3.2 载入程序 === file

在GDB内,载入程序很简单,使用file命令。如file hello。当然,程序的路径名要正确。

退出GDB === quit

在GDB的命令方式下,输入quit,你就可以退出GDB。你也可以输入'C-d'来退出GDB。

3.3运行程序 === run

当你在GDB中已将要调试的程序载入后,你可以用run命令来执行。如果你的程序需要参数,你可以在run指令后接着输入参数,就象你在SHELL下执行一个需要参数的命令一样。

3.4查看程序信息 === info

info指令用来查看程序的信息,当你用help info查看帮助的话,info指令的参数足足占了两个屏幕,它的参数非常多,但大部分不常用。我用info指令最多的是用它来查看断点信息。

3.4.1 查看断点信息

info br

br是断点break的缩写,记得GDB的补齐功能吧。用这条指令,你可以得到你所设置的所有断点的详细信息。包括断点号,类型,状态,内存地址,断点在源程序中的位置等。

3.4.2 查看当前源程序

info source

3.4.3 查看堆栈信息

info stack

用这条指令你可以看清楚程序的调用层次关系。

3.4.4 查看当前的参数

info args

3.5 列出源一段源程序 === list

3.5.1 列出某个函数

list FUNCTION

3.5.2 以当前源文件的某行为中间显示一段源程序

list LINENUM

3.5.3 接着前一次继续显示

list

3.5.4 显示前一次之前的源程序

list -

3.5.5 显示另一个文件的一段程序

list FILENAME:FUNCTION 或 list FILENAME:LINENUM

3.6 设置断点 === break

现在我们将要介绍的也许是最常用和最重要的命令:设置断点。无论何时,只要你的程序已被载入,并且当前没有正在运行,你就能设置,修改,删除断点。设置断点的命令是break。有许多种设置断点的方法。如下:

3.6.1 在函数入口设置断点

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<

上一页12 3 4 下一页

上一篇:新手学堂:嵌入式Linux基础知识全接触   下一篇:基于Linux的LUPA认证考试系统beta2发布
文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论

   相关文章:
·Ubuntu 7.10扩展Linux系统的多媒体应用

   文章评论:(1条)
  
 请留名: 匿名评论   点击查看所有评论 论坛讨论
 

 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。