gcc and g++编译器和gdb调试器 - chenlies的专栏 - csdnblog.htm

来自「关于C+编程思想的课件」· HTM 代码 · 共 1,279 行 · 第 1/4 页

HTM
1,279
字号
  <LI class=listitem><A href="http://emzoo.bokee.com/" 
  target=_blank>万象嵌入资源站</A></LI></UL>
<H3 class=listtitle>网页设计</H3>
<UL class=list>
  <LI class=listitem><A href="http://www.1feel.com/index.htm" 
  target=_blank>一个不错的页面设计公司</A>
  <LI class=listitem><A href="http://www.colordic.org/w/" 
  target=_blank>各种颜色的编号</A>
  <LI class=listitem><A href="http://www.zcool.com.cn/" 
  target=_blank>站酷-搜罗漂亮网站,提供优秀素材</A></LI></UL>
<H3 class=listtitle>存档</H3>
<UL class=list>
  <LI><A 
  href="http://blog.csdn.net/chenlies/archive/2007/02.aspx">2007年02月(4)</A>
  <LI><A 
  href="http://blog.csdn.net/chenlies/archive/2007/01.aspx">2007年01月(13)</A>
  <LI><A 
  href="http://blog.csdn.net/chenlies/archive/2006/12.aspx">2006年12月(2)</A>
  <LI><A 
  href="http://blog.csdn.net/chenlies/archive/2006/11.aspx">2006年11月(6)</A>
  <LI><A 
  href="http://blog.csdn.net/chenlies/archive/2006/10.aspx">2006年10月(5)</A>
  <LI><A 
  href="http://blog.csdn.net/chenlies/archive/2006/09.aspx">2006年09月(2)</A>
  <LI><A 
  href="http://blog.csdn.net/chenlies/archive/2006/08.aspx">2006年08月(3)</A>
  <LI><A 
  href="http://blog.csdn.net/chenlies/archive/2006/07.aspx">2006年07月(7)</A>
  <LI><A 
  href="http://blog.csdn.net/chenlies/archive/2006/06.aspx">2006年06月(6)</A>
  <LI><A 
  href="http://blog.csdn.net/chenlies/archive/2006/05.aspx">2006年05月(37)</A></LI></UL><SPAN 
id=Anthem_RecentComments_ltlComments__><SPAN id=RecentComments_ltlComments>
<H3 class=listtitle>最近评论</H3>
<UL class=list>
  <LI class=listitem>chenlies:<A title=点击查看《回复:写给单身男性的100条忠告》 
  href="http://blog.csdn.net/chenlies/archive/2007/02/22/1512444.aspx#541897">61笑,在任何人面前。<BR>62让你周围的人因为你的存在而感到快乐。<BR>63怕硬可以,欺软不行。<BR>64选择婚姻,而不是婚姻选择你。<BR>65着装整洁,不必非得把皮鞋擦得锃亮。<BR>66随意。不必往头发上喷发胶或者定型水。<BR>67看一个女人虚荣不虚荣,就剃上光头衣冠不整地跟她一起走在大街上。注意她的表情。<BR>68一支玫瑰,或者一句甜言蜜语。关……</A>
  <LI class=listitem>gehantao:<A title=点击查看《回复:职场失败的年轻人缺乏的究竟是什么?》 
  href="http://blog.csdn.net/chenlies/archive/2007/02/20/1512135.aspx#541855">好文章,很有警醒意义!收藏</A>
  <LI class=listitem>chenlies:<A title=点击查看《回复:《软件工程实践导论》读后感--待续》 
  href="http://blog.csdn.net/chenlies/archive/2007/01/07/1476142.aspx#532470">多谢朱春雷大哥的指点,以后一定注意,我借来看后感觉没有你体会的深刻,可能没到那个层次吧。呵呵</A>
  <LI class=listitem>zjzcl:<A title=点击查看《回复:《软件工程实践导论》读后感--待续》 
  href="http://blog.csdn.net/chenlies/archive/2007/01/07/1476142.aspx#530662">偶尔看到自己很早以前写的一篇书评,感谢这位博主的认可与转载,原文可参见http://blog.csdn.net/zjzcl/archive/2005/08/20/459721.aspx<BR>同时,友情提示博主不管转载谁的文章最好都应注明出处:)</A>
  <LI class=listitem>海炫:<A title="点击查看《回复:给中国高校的一封信(下)——请培养21世纪企业需要的人才 》" 
  href="http://blog.csdn.net/chenlies/archive/2006/11/29/1420618.aspx#519103">博客“选美”大赛请你当评委!令人瞩目的中国第一款女性车博客大赛开幕了,美女、美图琳琅一堂,最后哪位丽人有资格领得靓车归呢?博客大赛请你当评委。凡参与参加跟贴投票的博客都将有机会赢取奖品一份。同时,也欢迎介绍您的女性亲朋好友来参加此次“海炫《女性.车》博客大赛”。原创与车有关的文章、照片均可参加,参赛选手人人有奖,大奖: 
  最新款海炫女性车一辆! 参赛地址:http://hyshine.boke……</A></LI></UL></SPAN></SPAN><BR><BR></DIV>
<DIV id=main>
<DIV class=Tag>
<SCRIPT language=javascript 
src="gcc and g++编译器和gdb调试器 - chenlies的专栏 - CSDNBlog.files/urltag.aspx"></SCRIPT>

<DIV style="CLEAR: both"></DIV></DIV>
<SCRIPT>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</SCRIPT>

<DIV class=post>
<DIV class=postTitle><A 
href="http://blog.csdn.net/chenlies/archive/2006/05/08/713479.aspx"><IMG 
height=13 src="gcc and g++编译器和gdb调试器 - chenlies的专栏 - CSDNBlog.files/zhuan.gif" 
width=15 border=0>&nbsp;gcc and g++编译器和gdb调试器</A> </DIV>
<DIV class=postText>
<P>&nbsp;</P>
<P><A 
href="http://www.dvbbs.net/tech/php/2006041948307.asp">http://www.dvbbs.net/tech/php/2006041948307.asp</A></P>
<P>gcc and g++分别是gnu的c &amp; c++编译器</P>
<P>gcc/g++在执行编译工作的时候,总共需要4步</P>
<P>1.预处理,生成.i的文件[预处理器cpp]<BR>2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]<BR>3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]<BR>4.连接目标代码,生成可执行程序[链接器ld]</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>[参数详解]<BR>-x language filename <BR>   设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根<BR>   
据约定C语言的后缀名称是.c的,而C++的后缀名是.C或者.cpp,如果<BR>   你很个性,决定你的C代码文件的后缀名是.pig 
哈哈,那你就要用这<BR>   个参数,这个参数对他后面的文件名都起作用,除非到了下一个参数<BR>   的使用。<BR>   
可以使用的参数吗有下面的这些<BR>     `c', `objective-c', `c-header', `c++', `cpp-output', 
<BR>     `assembler', and `assembler-with-cpp'.<BR>   看到英文,应该可以理解的。<BR>   
例子用法:<BR>   gcc -x c hello.pig<BR>  <BR>-x none 
filename<BR>  关掉上一个选项,也就是让gcc根据文件名后缀,自动识别文件类型<BR>  例子用法:<BR>  gcc -x c hello.pig 
-x none hello2.c<BR>  <BR>-c 
<BR>  只激活预处理,编译,和汇编,也就是他只把程序做成obj文件<BR>  例子用法:<BR>  gcc -c 
hello.c<BR>  他将生成.o的obj文件 </P>
<P>-S<BR>  只激活预处理和编译,就是指把文件编译成为汇编代码。<BR>  例子用法<BR>  gcc -S 
hello.c<BR>  他将生成.s的汇编代码,你可以用文本编辑器察看</P>
<P>-E<BR>  只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里<BR>  面.<BR>  例子用法:<BR>  gcc -E 
hello.c &gt; pianoapan.txt<BR>  gcc -E hello.c | more<BR>  慢慢看吧,一个hello word 
也要与处理成800行的代码</P>
<P>-o<BR>  制定目标名称,缺省的时候,gcc 
编译出来的文件是a.out,很难听,如果<BR>  你和我有同感,改掉它,哈哈<BR>  例子用法<BR>  gcc -o hello.exe hello.c 
(哦,windows用习惯了)<BR>  gcc -o hello.asm -S hello.c</P>
<P>-pipe<BR>  使用管道代替编译中临时文件,在使用非gnu汇编工具的时候,可能有些问<BR>  题<BR>  gcc -pipe -o 
hello.exe hello.c</P>
<P>-ansi<BR>  关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一<BR>  些asm inline 
typeof关键字,以及UNIX,vax等预处理宏,</P>
<P>-fno-asm<BR>  此选项实现ansi选项的功能的一部分,它禁止将asm,inline和typeof用作<BR>  关键字。<BR>    <BR>-fno-strict-prototype<BR>  只对g++起作用,使用这个选项,g++将对不带参数的函数,都认为是没有显式<BR>  的对参数的个数和类型说明,而不是没有参数.<BR>  而gcc无论是否使用这个参数,都将对没有带参数的函数,认为城没有显式说<BR>  明的类型<BR>  <BR>-fthis-is-varialble<BR>  就是向传统c++看齐,可以使用this当一般变量使用.<BR>  <BR>-fcond-mismatch<BR>  允许条件表达式的第二和第三参数类型不匹配,表达式的值将为void类型<BR>  <BR>-funsigned-char<BR>-fno-signed-char<BR>-fsigned-char<BR>-fno-unsigned-char<BR>  这四个参数是对char类型进行设置,决定将char类型设置成unsigned 
char(前<BR>  两个参数)或者 signed char(后两个参数)<BR>  <BR>-include 
file<BR>  包含某个代码,简单来说,就是便以某个文件,需要另一个文件的时候,就可以<BR>  用它设定,功能就相当于在代码中使用#include&lt;filename&gt;<BR>  例子用法:<BR>  gcc 
hello.c -include /root/pianopan.h<BR>  <BR>-imacros 
file<BR>  将file文件的宏,扩展到gcc/g++的输入文件,宏定义本身并不出现在输入文件<BR>  中<BR>  <BR>-Dmacro<BR>  相当于C语言中的#define 
macro<BR>  <BR>-Dmacro=defn<BR>  相当于C语言中的#define 
macro=defn<BR>  <BR>-Umacro<BR>  相当于C语言中的#undef macro</P>
<P>-undef<BR>  取消对任何非标准宏的定义<BR>  <BR>-Idir<BR>  在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头<BR>  文件,如果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他<BR>  回先在你所制定的目录查找,然后再按常规的顺序去找.<BR>  对于#include&lt;file&gt;,gcc/g++会到-I制定的目录查找,查找不到,然后将到系<BR>  统的缺省的头文件目录查找<BR>  <BR>-I-<BR>  就是取消前一个参数的功能,所以一般在-Idir之后使用<BR>  <BR>-idirafter 
dir<BR>  在-I的目录里面查找失败,讲到这个目录里面查找.<BR>  <BR>-iprefix prefix<BR>-iwithprefix 
dir<BR>  一般一起使用,当-I的目录查找失败,会到prefix+dir下查找<BR>  <BR>-nostdinc<BR>  使编译器不再系统缺省的头文件目录里面找头文件,一般和-I联合使用,明确<BR>  限定头文件的位置<BR>  <BR>-nostdin 
C++<BR>  规定不在g++指定的标准路经中搜索,但仍在其他路径中搜索,.此选项在创建<BR>  libg++库使用<BR>  <BR>-C<BR>  在预处理的时候,不删除注释信息,一般和-E使用,有时候分析程序,用这个很<BR>  方便的<BR>  <BR>-M<BR>  生成文件关联的信息。包含目标文件所依赖的所有源代码<BR>  你可以用gcc 
-M 
hello.c来测试一下,很简单。<BR>  <BR>-MM<BR>  和上面的那个一样,但是它将忽略由#include&lt;file&gt;造成的依赖关系。<BR>  <BR>-MD<BR>  和-M相同,但是输出将导入到.d的文件里面<BR>  <BR>-MMD<BR>  和-MM相同,但是输出将导入到.d的文件里面<BR>  <BR>-Wa,option<BR>  此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选<BR>  项,然后传递给会汇编程序<BR>  <BR>-Wl.option<BR>  此选项传递option给连接程序;如果option中间有逗号,就将option分成多个选<BR>  项,然后传递给会连接程序.<BR>  </P>
<P>-llibrary <BR>  制定编译的时候使用的库<BR>  例子用法<BR>  gcc -lcurses 
hello.c<BR>  使用ncurses库编译程序<BR>  <BR>-Ldir<BR>  制定编译的时候,搜索库的路径。比如你自己的库,可以用它制定目录,不然<BR>  编译器将只在标准库的目录找。这个dir就是目录的名称。<BR>  <BR>-O0<BR>-O1<BR>-O2<BR>-O3<BR>  编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最<BR>  高  <BR>  <BR>-g<BR>  只是编译器,在编译的时候,产生条是信息。<BR>  <BR>-gstabs<BR>  此选项以stabs格式声称调试信息,但是不包括gdb调试信息.<BR>  <BR>-gstabs+<BR>  此选项以stabs格式声称调试信息,并且包含仅供gdb使用的额外调试信息.<BR>  <BR>-ggdb<BR>  此选项将尽可能的生成gdb的可以使用的调试信息.<BR>-static<BR>  此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么<BR>动态连接库,就可以运行.<BR>-share<BR>  此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.<BR>-traditional<BR>  试图让编译器支持传统的C语言特性</P>
<P><BR>GNU 的调试器称为 gdb,该程序是一个交互式工具,工作在字符模式。在 X Window 系统中,有一个 gdb 的<BR>前端图形工具,称为 
xxgdb。gdb 是功能强大的调试程序,可完成如下的调试任务:<BR>* 设置断点;<BR>* 监视程序变量的值;<BR>* 程序的单步执行;<BR>* 
修改变量的值。<BR>在可以使用 gdb 调试程序之前,必须使用 -g 选项编译源文件。可在 makefile 中如下定义 CFLAGS 
变量:<BR>CFLAGS = -g<BR>运行 gdb 调试程序时通常使用如下的命令:<BR>gdb progname</P>
<P>在 gdb 提示符处键入help,将列出命令的分类,主要的分类有:<BR>* aliases:命令别名<BR>* 
breakpoints:断点定义;<BR>* data:数据查看;<BR>* files:指定并查看文件;<BR>* internals:维护命令;<BR>* 
running:程序执行;<BR>* stack:调用栈查看;<BR>* statu:状态查看;<BR>* tracepoints:跟踪程序执行。<BR>键入 
help 后跟命令的分类名,可获得该类命令的详细清单。</P>
<P><BR>#DENO#<BR>gdb 
的常用命令<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
表 1-4&nbsp; 常用的 gdb 
命令<BR>命令&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
解释<BR>break 
NUM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
在指定的行上设置断点。<BR>bt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
显示所有的调用栈帧。该命令可用来显示函数的调用顺序。<BR>clear&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
删除设置在特定源文件、特定行上的断点。其用法为:clear 
FILENAME:NUM。<BR>continue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
继续执行正在调试的程序。该命令用在程序由于处理信号或断点而<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
导致停止运行时。<BR>display 
EXPR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
每次程序停止后显示表达式的值。表达式由程序定义的变量组成。<BR>file 
FILE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
装载指定的可执行文件进行调试。<BR>help 
NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
显示指定命令的帮助信息。<BR>info 
break&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
显示当前断点清单,包括到达断点处的次数等。<BR>info 
files&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
显示被调试文件的详细信息。<BR>info 
func&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
显示所有的函数名称。<BR>info 
local&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
显示当函数中的局部变量信息。<BR>info 
prog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
显示被调试程序的执行状态。<BR>info 
var&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
显示所有的全局和静态变量名称。<BR>kill&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
终止正被调试的程序。<BR>list&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
显示源代码段。<BR>make&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
在不退出 gdb 的情况下运行 make 
工具。<BR>next&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
在不单步执行进入其他函数的情况下,向前执行一行源代码。<BR>print 
EXPR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
显示表达式 EXPR 的值。</P>
<P><BR>1.8.5&nbsp; gdb 使用范例<BR>-----------------<BR>清单&nbsp; 一个有错误的 C 源程序 
bugging.c<BR>-----------------<BR>#include <BR>#include </P>
<P>static char buff [256];<BR>static char* string;<BR>int main ()<BR>{</P>
<P>&nbsp;&nbsp;&nbsp; printf ("Please input a string: ");<BR>&nbsp;&nbsp;&nbsp; 
gets (string);</P>
<P>&nbsp;&nbsp;&nbsp; printf ("\nYour string is: %s\n", 
string);<BR>}<BR>-----------------<BR>上面这个程序非常简单,其目的是接受用户的输入,然后将用户的输入打印出来。该程序使用了一个未经过初<BR>始化的字符串地址 
string,因此,编译并运行之后,将出现 Segment Fault 错误:<BR>$ gcc -o test -g test.c<BR>$ 
./test<BR>Please input a string: asfd<BR>Segmentation fault (core 
dumped)<BR>为了查找该程序中出现的问题,我们利用 gdb,并按如下的步骤进行:<BR>1.运行 gdb bugging 命令,装入 bugging 
可执行文件;<BR>2.执行装入的 bugging 命令;<BR>3.使用 where 命令查看程序出错的地方;<BR>4.利用 list 命令查看调用 
gets 函数附近的代码;<BR>5.唯一能够导致 gets 函数出错的因素就是变量 string。用 print 命令查看 string 的值;<BR>6.在 
gdb 中,我们可以直接修改变量的值,只要将 string 取一个合法的指针值就可以了,为此,我们在第<BR>&nbsp;11 
行处设置断点;<BR>7.程序重新运行到第 11 行处停止,这时,我们可以用 set variable 命令修改 string 
的取值;<BR>8.然后继续运行,将看到正确的程序运行结果。</P><BR><BR>
<P id=TBPingURL>Trackback: 
http://tb.blog.csdn.net/TrackBack.aspx?PostId=713479</P><BR></DIV>
<DIV class=postFoot>
<SCRIPT src=""></SCRIPT>
[<A title=功能强大的网络收藏夹,一秒钟操作就可以轻松实现保存带来的价值、分享带来的快乐 
href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(saveit=window.open('http://wz.csdn.net/storeit.aspx?t='+escape(d.title)+'&amp;u='+escape(d.location.href)+'&amp;c='+escape(t),'keyit','scrollbars=no,width=590,height=300,left=75,top=20,status=no,resizable=yes'));saveit.focus();">收藏到我的网摘</A>]&nbsp;&nbsp; 
可甜鼠王发表于 2006年05月08日 21:01:00 </DIV></DIV><LINK 
href="http://blog.csdn.net/chenlies/Services/Pingback.aspx" rel=pingback><!--<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"><rdf:Descriptionrdf:about="http://blog.csdn.net/chenlies/archive/2006/05/08/713479.aspx"dc:identifier="http://blog.csdn.net/chenlies/archive/2006/05/08/713479.aspx"dc:title="gcc and g++编译器和gdb调试器"trackback:ping="http://tb.blog.csdn.net/TrackBack.aspx?PostId=713479" /></rdf:RDF>-->
<SCRIPT>function hide(){showComment();}</SCRIPT>
<BR>
<DIV class=post>
<DIV class=postTitle>相关文章:</DIV>
<UL class=postText>
  <LI><A href="http://blog.csdn.net/leeajax/archive/2004/07/12/39688.aspx" 
  target=_blank>http://blog.csdn.net/leeajax/archive/2004/07/12/39688.aspx</A> 
  2004-07-12 <A href="http://blog.csdn.net/leeajax/" target=_blank>leeajax</A>
  <LI><A href="http://blog.csdn.net/jasonme/archive/2005/02/01/276187.aspx" 
  target=_blank>“UNIX系统开发-gcc参数详解"学习笔记</A> 2005-02-01 <A 
  href="http://blog.csdn.net/jasonme/" target=_blank>jasonme</A>
  <LI><A href="http://blog.csdn.net/Lalphbet/archive/2005/02/25/301939.aspx" 
  target=_blank>gdb使用指南~(1)</A> 2005-02-25 <A 
  href="http://blog.csdn.net/Lalphbet/" target=_blank>Lalphbet</A>
  <LI><A href="http://blog.csdn.net/shanyou/archive/2003/03/31/10044.aspx" 
  target=_blank>GCC编译器的使用</A> 2003-03-31 <A href="http://blog.csdn.net/shanyou/" 
  target=_blank>shanyou</A>
  <LI><A href="http://blog.csdn.net/Kendiv/archive/2004/12/28/231710.aspx" 
  target=_blank>GCC 中文手册(上)</A> 2004-12-28 <A 
  href="http://blog.csdn.net/Kendiv/" 
target=_blank>Kendiv</A></LI></UL></DIV><BR><BR>
<DIV class=post id=csdn_zhaig_ad_yahoo></DIV><SPAN 
id=Anthem_Comments.ascx_ltlComments__><SPAN id=Comments.ascx_ltlComments><BR>
<DIV id=comments>
<H3></H3>没有评论。 </DIV></SPAN></SPAN>
<SCRIPT language=javascript>
ad_width=468;
ad_height=60;
adcss=2;
unionuser=19;
ad_type='j';
count=5; 
</SCRIPT>

<SCRIPT language=javascript 
src="gcc and g++编译器和gdb调试器 - chenlies的专栏 - CSDNBlog.files/showads.js" 
type=text/javascript></SCRIPT>

<SCRIPT language=javascript 
src="gcc and g++编译器和gdb调试器 - chenlies的专栏 - CSDNBlog.files/showgm.js" 
type=text/javascript></SCRIPT>

<SCRIPT type=text/javascript>document.write("<img src=http://counter.csdn.net/pv.aspx?id=24 border=0 width=0 height=0>");</SCRIPT>

<DIV class=CommentForm id=commentform>
<H3>发表评论 </H3>
<DIV id=Anthem_PostComment.ascx_CommentUpdatePanel__>
<DIV id=PostComment.ascx_CommentUpdatePanel>
<TABLE class=CommentForm>
  <TBODY>
  <TR>
    <TD width=69 height=0></TD>
    <TD></TD></TR>
  <TR>
    <TD width=70>大名:</TD>
    <TD align=left><INPUT id=PostComment.ascx_tbName style="WIDTH: 300px" 
      disabled maxLength=32 size=40 name=PostComment.ascx:tbName> <SPAN 
      id=PostComment.ascx_RequiredFieldValidator2 
      style="DISPLAY: none; COLOR: red" initialvalue="" 
      evaluationfunction="RequiredFieldValidatorEvaluateIsValid" 
      display="Dynamic" errormessage="<br>请输入尊姓大名" 
      controltovalidate="PostComment.ascx_tbName"><BR>请输入尊姓大名</SPAN> </TD></TR>
  <TR>
    <TD width=70>网址:</TD>
    <TD align=left><INPUT id=PostComment.ascx_tbUrl style="WIDTH: 300px" 
      disabled maxLength=256 size=40 name=PostComment.ascx:tbUrl> </TD></TR>
  <DIV id=PostComment.ascx_AntiBotImageRegion></DIV>
  <TR>
    <TD width=70>校验码:</TD>
    <TD align=left><INPUT id=PostComment.ascx_tbAntiBotImage 
      style="WIDTH: 75px" name=PostComment.ascx:tbAntiBotImage> <SPAN 
      id=PostComment.ascx_valAntiBotImage style="DISPLAY: none; COLOR: red" 
      evaluationfunction="CustomValidatorEvaluateIsValid" 
      display="Dynamic">检验码无效!</SPAN> <SPAN 
      id=Anthem_PostComment.ascx_imgAntiBotImage__><IMG 
      id=PostComment.ascx_imgAntiBotImage alt="" 
      src="gcc and g++编译器和gdb调试器 - chenlies的专栏 - CSDNBlog.files/AntiBotImage.jpg" 
      align=absMiddle border=0></SPAN> <SPAN 
      id=Anthem_PostComment.ascx_lbCreateAntiBotImage__><A 
      id=PostComment.ascx_lbCreateAntiBotImage 
      onclick="javascript:Anthem_FireCallBackEvent(this,event,'PostComment.ascx:lbCreateAntiBotImage','',false,'','','',true,null,null,null,true,true);return false;" 
      href="javascript:__doPostBack('PostComment.ascx$lbCreateAntiBotImage','')">看不清,换一张</A></SPAN> 
    </TD></TR>
  <DIV></DIV>
  <TR>
    <TD colSpan=3>评论&nbsp; <SPAN id=PostComment.ascx_RequiredFieldValidator3 
      style="DISPLAY: none; COLOR: red" initialvalue="" 
      evaluationfunction="RequiredFieldValidatorEvaluateIsValid" 
      display="Dynamic" errormessage="<br>请输入评论" 
      controltovalidate="PostComment.ascx_tbComment"><BR>请输入评论</SPAN> <BR><TEXTAREA id=PostComment.ascx_tbComment style="WIDTH: 381px; HEIGHT: 193px" disabled name=PostComment.ascx:tbComment rows=10 cols=50></TEXTAREA> 
    </TD></TR>
  <TR>
    <TD colSpan=3><SPAN 
      id=Anthem_PostComment.ascx_btnSubmit__></SPAN>&nbsp;&nbsp;&nbsp; </TD></TR>
  <TR>
    <TD colSpan=3><SPAN id=PostComment.ascx_Message 
      style="COLOR: red">当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击<A 
      href="http://passport.csdn.net/member/UserLogin.aspx?from=http://blog.csdn.net/chenlies/archive/2006/05/08/713479.aspx">登录</A></SPAN> 
    </TD></TR></TBODY></TABLE></DIV></DIV></DIV></DIV>
<P id=footer>Powered by: <BR><A id=Footer1_Hyperlink2 
href="http://scottwater.com/blog" name=Hyperlink1><IMG 
src="gcc and g++编译器和gdb调试器 - chenlies的专栏 - CSDNBlog.files/100x30_Logo.gif" 
border=0></A> <A id=Footer1_Hyperlink3 href="http://asp.net/" 
name=Hyperlink1><IMG 
src="gcc and g++编译器和gdb调试器 - chenlies的专栏 - CSDNBlog.files/PoweredByAsp.Net.gif" 
border=0></A> <BR>Copyright © 可甜鼠王 </P>
<SCRIPT 
src="gcc and g++编译器和gdb调试器 - chenlies的专栏 - CSDNBlog.files/counter.js"></SCRIPT>

<SCRIPT type=text/javascript>
<!--
var Page_Validators =  new Array(document.getElementById("PostComment.ascx_RequiredFieldValidator2"), document.getElementById("PostComment.ascx_valAntiBotImage"), document.getElementById("PostComment.ascx_RequiredFieldValidator3"));
// -->
</SCRIPT>
<INPUT id=__EVENTVALIDATION type=hidden 
value=/wEWBgL+raDpAgKqtOi0AwLAsuLbDALoqa3xBQLTjIjwCwKi687YCYmmjiYoBUqRD3W21rt8r27ATljZ 
name=__EVENTVALIDATION>
<SCRIPT type=text/javascript>
<!--
var Page_ValidationActive = false;
if (typeof(ValidatorOnLoad) == "function") {
    ValidatorOnLoad();
}

function ValidatorOnSubmit() {
    if (Page_ValidationActive) {
        return ValidatorCommonOnSubmit();
    }
    else {
        return true;
    }
}
// -->
</SCRIPT>
 </FORM>
<SCRIPT language=javascript type=text/javascript>
	<!--
	try{
		hide();
		}
		catch(e){
		}
	//-->
    </SCRIPT>
</BODY></HTML>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?