预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共28页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

GDB完全手册1 GDB完全手册 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那 种图形界面方式的,像VC、BCB等 IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、 BCB的图形化调试器更强大的功能。所 谓“寸有所长,尺有所短”就是这个道理。 用GDB调试程序 1GDB概述 ———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那 种图形界面方式的,像VC、BCB等 IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、 BCB的图形化调试器更强大的功能。所 谓“寸有所长,尺有所短”就是这个道理。 一般来说,GDB主要帮忙你完成下面四个方面的功能: 1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 3、当程序被停住时,可以检查此时你的程序中所发生的事。 4、动态的改变你程序的执行环境。 从上面看来,GDB和一般的调试工具没有什么两样,基本上也是完成这些功能,不过在细 节上,你会发现GDB这个调试工 具的强大,大家可能比较习惯了图形化的调试工具,但有时候,命令行的调试工具却有着图 形化工具所不能完成的功 能。让我们一一看来。 2一个调试示例 —————— 源程序:tst.c 1#include<stdio.h> 2 3intfunc(intn) 4{ 5intsum=0,i; 6for(i=0;i<n;i++) 7{ 8sum+=i; pdfmakebyrwx_hc1 GDB完全手册2 9} 10returnsum; 11} 12 13 14main() 15{ 16inti; 17longresult=0; 18for(i=1;i<=100;i++) 19{ 20result+=i; 21} 22 23printf("result[1-100]=%dn",result); 24printf("result[1-250]=%dn",func(250)); 25} 编译生成执行文件:(Linux下) hchen/test>cc-gtst.c-otst 使用GDB调试: hchen/test>gdbtst<----------启动GDB GNUgdb5.1.1 Copyright2002FreeSoftwareFoundation,Inc. GDBisfreesoftware,coveredbytheGNUGeneralPublicLicense,andyouare welcometochangeitand/ordistributecopiesofitundercertainconditions. Type"showcopying"toseetheconditions. ThereisabsolutelynowarrantyforGDB.Type"showwarranty"fordetails. ThisGDBwasconfiguredas"i386-suse-linux"... (gdb)l<--------------------l命令相当于list,从第一行开始例出原码。 1#include<stdio.h> 2 3intfunc(intn) 4{ 5intsum=0,i; 6for(i=0;i<n;i++) 7{ 8sum+=i; 9} 10returnsum; (gdb)<--------------------直接回车表示,重复上一次命令 11} 12 13 14main() pdfmakebyrwx_hc2 GDB完全手册3 15{ 16inti; 17longresult=0; 18for(i=1;i<=100;i++) 19{ 20result+=i; (gdb)break16<--------------------设置断点,在源程序第16行处。 Breakpoint1at0x8048496:filetst.c,line16. (gdb)breakfunc<--------------------设置断点,在函数func()入口处。 Breakpoint2at0x8048456:filetst.c,line5. (gdb)infobreak<--------------------查看断点信息。 NumTypeDispEnbAddressWhat 1breakpointkeepy0x08048496inmainattst.c:16 2breakpointkeepy0x08048456infuncattst.c:5 (gdb)r<------------