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> gcc and g++编译器和gdb调试器</A> </DIV>
<DIV class=postText>
<P> </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 & c++编译器</P>
<P>gcc/g++在执行编译工作的时候,总共需要4步</P>
<P>1.预处理,生成.i的文件[预处理器cpp]<BR>2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]<BR>3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]<BR>4.连接目标代码,生成可执行程序[链接器ld]</P>
<P> </P>
<P> </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 > 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<filename><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<file>,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<file>造成的依赖关系。<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>
表 1-4 常用的 gdb
命令<BR>命令
解释<BR>break
NUM
在指定的行上设置断点。<BR>bt
显示所有的调用栈帧。该命令可用来显示函数的调用顺序。<BR>clear
删除设置在特定源文件、特定行上的断点。其用法为:clear
FILENAME:NUM。<BR>continue
继续执行正在调试的程序。该命令用在程序由于处理信号或断点而<BR>
导致停止运行时。<BR>display
EXPR
每次程序停止后显示表达式的值。表达式由程序定义的变量组成。<BR>file
FILE
装载指定的可执行文件进行调试。<BR>help
NAME
显示指定命令的帮助信息。<BR>info
break
显示当前断点清单,包括到达断点处的次数等。<BR>info
files
显示被调试文件的详细信息。<BR>info
func
显示所有的函数名称。<BR>info
local
显示当函数中的局部变量信息。<BR>info
prog
显示被调试程序的执行状态。<BR>info
var
显示所有的全局和静态变量名称。<BR>kill
终止正被调试的程序。<BR>list
显示源代码段。<BR>make
在不退出 gdb 的情况下运行 make
工具。<BR>next
在不单步执行进入其他函数的情况下,向前执行一行源代码。<BR>print
EXPR
显示表达式 EXPR 的值。</P>
<P><BR>1.8.5 gdb 使用范例<BR>-----------------<BR>清单 一个有错误的 C 源程序
bugging.c<BR>-----------------<BR>#include <BR>#include </P>
<P>static char buff [256];<BR>static char* string;<BR>int main ()<BR>{</P>
<P> printf ("Please input a string: ");<BR>
gets (string);</P>
<P> 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> 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)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=590,height=300,left=75,top=20,status=no,resizable=yes'));saveit.focus();">收藏到我的网摘</A>]
可甜鼠王发表于 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>评论 <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> </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 + -
显示快捷键?