(可点击文中标题返回目录):gdb概述一个调试示例使用gdbgdb的命令概貌gdb中运行UNIX的shell程序在gdb中运行程序调试已运行的程序暂停/恢复程序运行设置断点设置观察点设置捕捉点维护停止点停止条件维护为停止点设定运行命令断点菜单恢复程序运行和单步调试信号查看栈信息查看源程序显示源代码搜索源代码指定源文件的路径源代码的内存查看运行时数据表达式程序变量数组输出格式查看内存自动显示设置显示选项历史记录gdb环境变量查看寄存器改变程序的执行修改变量值跳转执行产生信号量强制函数返回强制调用函数后记gdb概述 gdb是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现gdb这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,gdb主要帮忙你完成下面四个方面的功能: 1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 3、当程序被停住时,可以检查此时你的程序中所发生的事。 4、动态的改变你程序的执行环境。从上面看来,gdb和一般的调试工具没有什么两样,基本上也是完成这些功能,不过在细节上,你会发现gdb这个调试工具的强大,大家可能比较习惯了图形化的调试工具,但有时候,命令行的调试工具却有着图形化工具所不能完成的功能。让我们一一看来。一个调试示例源程序:#include<>intfunc(intn){intsum=0,i;for(i=0;i<n;i++){sum+=i;}returnsum;}intmain(){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));return0;} 编译生成执行文件:(Linux下)hchen/--otst 使用gdb调试:hchen/test>gdbtst<----------,,coveredbytheGNUGeneralPublicLicense,etochangeitand/"showcopying""showwarranty""i386-suse-linux"...(gdb)l<--------------------l命令相当于list,从第一行开始例出原码。1#include<>23intfunc(intn)4{5intsum=0,i;6for(i=0;i<n;i++)7{8sum+=i;9}10returnsum;(gdb)<--------------------直接回车表示,重复上一次命令11}121314intmain()15{16inti;17longresult=0;18for(i=1;i<=100;i++)19{20result+=i;(gdb)break16<--------------------设置断点,在源程序第16行处。Breakpoint1at0x8048496:,line16.(gdb)breakfunc<--------------------设置断点,在函数func()入口处。Breakpoint2at0x8048456:,line5.(gdb)infobreak<--------------------查看断点信息。::5(gdb)r<---------------------运行程序,run命令简写Startingprogram:/home/hchen/test/tstBreakpoint1,main():17<----------在断点处停住。17longresult=0;(gdb)n<------------
用GDB调试程序 来自淘豆网m.daumloan.com转载请标明出处.