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

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

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

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

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

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

一:深入了解编译、链接、组建(LookintoCompile、Linking、Build)(1)Compile(2)Linking(3)Build二:断点(BreakPoint)(1)普通断点(NomalBreakPoint)(2)条件断点(ConditionBreakPoint)(3)数据断点(DataBreakPoint)三:断点之后能做些什么?(WhatcanIdoafterBreakPoint)(1)variables(2)watch(3)stack(4)memory四:断言(Assert)五:printf()六:Log七:Trace八:虚拟内存简介(VirtualMemoryIntro)九:常见的段错误(CommonSegmentationFault)(1)堆区内存错误(HeapMemoryErrors)1,未初始化的内存仿问(UninitializedMemoryAccess)2,无效的内存仿问(InvalidMemoryAccess)3,内存泄露(Memoryleaks)4,未分配内存(Missingallocation)(2)栈区内存错误(StackMemoryErrors)1,未初始化的内存仿问(UninitializedMemoryAccess)2,无效的内存仿问(InvalidMemoryAccess)3,数组越界(Writingofftheendofthearray)4,栈溢出(StackOverflows)十:轻松解决内存泄漏(HuntingMemoryLeaks)结束语:怎样尽可能的避免错误**********************************************************/下面就开始祥细讲解,/一:深入了解Compile、Linking、Build(1)Compile-编译当您点击编译按钮时,编译器将会把你的源代码文件(.c文件)转换为目标文件(.obj文件),目标文件包含的是源代码文件翻译后的机器语言。这些是不能被直接运行的,还需要链接器将此中间代码与其他代码相结合来生成可执行文件。请转看Linking,Compile时,编译器通常会给你2种类型的提示:warnings和errorswarnings别小看warnings,它有可能会导致相当严重且极其隐蔽的bug,尤其是在指针管理内存这一块,/常见的warning有以下几种类型1,使用了未经初始化的变量,或者定义变量了却没有使用。解析:未经初始化的变量会存一个随机值,绝大多数的时候这个值都不是你想要的,你用它,编译器能不给你warning吗,?2,使用了一些看上去非常愚蠢的语句,编译器都看不下去了例如,if(blueguy=0)printf("blueguy=0!!");if(blueguy&&greengirl||hemy);3,使用了未定义的语句(注意,vc6.0是不会给这样的语句一个warning的)例如,j=i+++i++;//我自己都不知道自己想表达什么意思,呵呵x=x>0?x++:x--;4,类型不匹配例如,char*blueguy=(int*)greengirl;本意是按单字节仿问内存的,结果却按四字节仿问内存,你感到崩溃,我感到崩溃,编译器也感到崩溃,估计编译器会真的崩溃了,/5,函数原型明明写着有返回值的,结果函数体内却没有return一个值,反之亦然。例如,intmain(void){}或者voidmain() HYPERLINK"http://tieba.baidu.com/p/1005834237"\o"累计分享1次"1 4 {return0;}......等等,等等,等等。/好了,warnings就简单介绍到这里了,希望您写的程序里一个warning也没有errors出现errors时,相对来说比较好解决一些,通常编译器会给你明确的提示像,"syntaxerrors","unexpectedparenthesis","unexpectedendoffile"之类的,常见的errors有以下几种类型(1)语句缺少";"号例如,for(;)structbluguy{intx;}(2)括号不匹配例如,intmain(void){if(!blueguyCompile就这样结束了,下面接着看Linking(2)Linking-链接vc6.0上是没有Linking按钮的,或许是我菜了,/没注意到vc6.0的Build把Compile与Linking合在一起了,/链接的作用是将目标代码、系统的标准启动代码和库代码结合在一起,生成可执行程序。在你Compile的时候,编译器假定所有的结构体、函数、全局变量都已经在别的文件里声明了,但这个假设并不总是成立的,链接器就是在文件中查看这些结构体、函数以