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

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

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

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

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

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

GDB不完全手册 巫山霏云 使用GDB调试程序必须在被调试程序中间加入调试信息,FreePascal和GCC都是使用的–g选项,在命令行下使用如下方法: fpc–gtemp.pas 这样编译出来的程序就带有编译信息咯,可以直接被GDB认出来。 p.s.fpc的编译选项中文解释我已经在DRS,OIBH上面公布了,有兴趣的可以去看看,也可以去我的Website查找。 在FP的IDE中可以在Option菜单下的mode中间选择Debug模式,然后编译程序,即可使编译后的程序带有调试信息。需要说明的是没人情况下直接按F9编译出来的程序并没有带调试信息,但是当你按F7调试程序时,FP会重新按照编译模式编译一次代码,从而使你可以编译程序。 直接使用GDB有两种形式,一种从IDE里面的DeBug菜单中GDBWindow进入GDB界面。这样可以直接使用GDB,但是仍然不是很稳定。我不是特别推荐,当然这个也有好处,和IDE结合比较紧密。 比较好的方法是在命令行下面输入gdbtemp.exe直接进入GDB,如下: D:\fpc\bin\win32\fpc.exe–gE:\prodata\program\temp\temp.pas FreePascalCompilerversion2.0.2[2005/12/27]fori386 Copyright(c)1993-2005byFlorianKlaempfl TargetOS:Win32fori386 CompilingE:\prodata\program\temp\temp.pas LinkingE:\prodata\program\temp\temp.exe 99Linescompiled,0.1sec D:\fpc\bin\win32\gdb.exeE:\prodata\program\temp\temp.exe GNUgdb6.2.1 Copyright2004FreeSoftwareFoundation,Inc. GDBisfreesoftware,coveredbytheGNUGeneralPublicLicense,andyouare welcometochangeitand/ordistributecopiesofitundercertainconditions. Type"showcopying"toseetheconditions. ThereisabsolutelynowarrantyforGDB.Type"showwarranty"fordetails. ThisGDBwasconfiguredas"i686-pc-cygwin"... (gdb) 这样便进入了GDB调试环境。当然你也可以进入GDB后用file再装入要调试的程序: (gdb)filetemp.exe Readingsymbolsfrom/cygdrive/e/prodata/program/temp/temp.exe...done. 退出呢?quit拉,缩写就是q拉。小心别随便输入哦,不然你设置的断点监视什么的就没有咯,下次就会比较麻烦的咯。 (gdb)是提示符,你也可以更改的,使用setpromptuserdefine厄,我比较喜欢GDB>: (gdb)setpromptGDB> GDB> 我们可以设置成我们喜欢的提示符,这样看起来更加好看些。 进入后你可以查看当前的语言,GDB能够自动识别你所用的编程语言,当然也有可能不能识别,这时你可以设置一下: GDB>showlanguage Thecurrentsourcelanguageis"auto;currentlypascal". GDB>setlanguagepascal GDB>showlanguage Thecurrentsourcelanguageis"pascal". GDB>setlanguagec GDB>showlanguage Thecurrentsourcelanguageis"c". GDB>setlanguagepascal GDB>showlanguage Thecurrentsourcelanguageis"pascal". GDB能够自动的识别命令的缩写,这意味着我们可以不必输入冗长的代码,而只需输入部分缩写,例如list可以缩写成l,break可以缩写成b,这样的简写还有很多。你可以在GDB中尝试输入,如果GDB不能自动识别,也会给出所有的可能,然后让你选择。 List指令是列出代码的意思: GDB>list 1{ 2ID:bethune1 3LANG:PASCAL 4PROG:beads 5} 6Var 7dat:Array[1..350]OfChar; 8fin,fout:Text; 9count,