无论多么优秀的程序员,必须经常面对的一个问题就是调试。当程序编译完成后,他可能无法正常运行;或许程序会彻底崩溃;或许只是不能正常地运行某些功能;或许它的输出会被挂起;或许不会提示要求正常的输入。无论在何种情况下,跟踪这些问题,特别是在大的工程中,将是开发中最困难的部分,本章将介绍使用gdb(GNUdebugger)调试程序的方法,该程序是一个调试器,是用来帮助程序员寻找程序中的错误的软件。gdb是GNU开发组织发布的一个强大的UNIX/Linux下的程序调试工具。或许,有人比较习惯图形界面方式的,像VC、BCB等IDE环境,但是在UNIX/Linux平台下做软件,gdb这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,gdb主要帮忙用户完成下面4个方面的功能:● 启动程序,可以按照用户自定义的要求随心所欲的运行程序。● 可让被调试的程序在用户所指定的调试的断点处停住(断点可以是条件表达式)。● 当程序停住时,可以检查此时程序中所发生的事。● 动态地改变程序的执行环境。从上面来看,gdb和一般的调试工具区别不大,基本上也是完成这些功能,不过在细节上,会发现gdb这个调试工具的强大。大家可能习惯了图形化的调试工具,但有时候,命令行的调试工具却有着图形化工具所不能完成的功能。下面通过实例4-4进行说明。实例4- #include<>intfunc(intn){ intsum=0,i; for(i=0;i<n;i++) { sum+=i; } returnsum;}main(){ inti; longresult=0; for(i=1;i<=100;i++) { result+=i; } printf("result[1-100]=%d\n",result); printf("result[1-250]=%d\n",func(250));}编译生成执行文件(Linux下):[******@daviddavid]$gcc–-otest使用gdb调试:[******@DAVIDdavid]$gdbtest<----------启动gdbGNUgdbRedHatLinux(-)Copyright2003FreeSoftwareFoundation,,coveredbytheGNUGeneralPublicLicense,etochangeitand/"showcopying""showwarranty""i386-redhat-Linux-gnu"...(gdb)键入l命令相当于list命令,从第一行开始列出源码:[******@DAVIDdavid]$gdbtestGNUgdbRedHatLinux(-
linux程序开发的GDB调试 来自淘豆网m.daumloan.com转载请标明出处.