欢迎来到天天文库
浏览记录
ID:40710510
大小:37.10 KB
页数:19页
时间:2019-08-06
《C语言程序调试》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一:深入了解编译、链接、组建(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四:断言(Asse
2、rt)五:printf()六:Log七:Trace八:虚拟内存简介(VirtualMemoryIntro)九:常见的段错误(CommonSegmentationFault)(1)堆区内存错误(HeapMemoryErrors)1,未初始化的内存仿问(UninitializedMemoryAccess)2,无效的内存仿问(InvalidMemoryAccess)3,内存泄露(Memoryleaks)4,未分配内存(Missingallocation)(2)栈区内存错误(StackMemoryErro
3、rs)1,未初始化的内存仿问(UninitializedMemoryAccess)2,无效的内存仿问(InvalidMemoryAccess)3,数组越界(Writingofftheendofthearray)4,栈溢出(StackOverflows)十:轻松解决内存泄漏(HuntingMemoryLeaks) 结束语:怎样尽可能的避免错误**********************************************************/下面就开始祥细讲解,/一:深入了解Comp
4、ile、Linking、Build(1)Compile-编译当您点击编译按钮时,编译器将会把你的源代码文件(.c文件)转换为目标文件(.obj文件),目标文件包含的是源代码文件翻译后的机器语言。这些是不能被直接运行的,还需要链接器将此中间代码与其他代码相结合来生成可执行文件。请转看Linking,Compile时,编译器通常会给你2种类型的提示:warnings和errorswarnings 别小看warnings,它有可能会导致相当严重且极其隐蔽的bug,尤其是在指针管理内存这一块,/常见的wa
5、rning有以下几种类型1,使用了未经初始化的变量,或者定义变量了却没有使用。解析:未经初始化的变量会存一个随机值,绝大多数的时候这个值都不是你想要的,你用它,编译器能不给你warning吗,?2,使用了一些看上去非常愚蠢的语句,编译器都看不下去了例如,if(blueguy=0) printf("blueguy=0!!"); if(blueguy&&greengirl
6、
7、hemy) ;3,使用了未定义的语句(注意,vc6.0是不会给这样的语句一个
8、warning的)例如,j=i+++i++; //我自己都不知道自己想表达什么意思,呵呵 x=x>0?x++:x--;4,类型不匹配例如,char*blueguy=(int*)greengirl;本意是按单字节仿问内存的,结果却按四字节仿问内存,你感到崩溃,我感到崩溃,编译器也感到崩溃,估计编译器会真的崩溃了,/5,函数原型明明写着有返回值的,结果函数体内却没有return一个值,反之亦然。例如,intmain(void){}或者voidmain()14{ return0;}.
9、.....等等,等等,等等。/好了,warnings就简单介绍到这里了,希望您写的程序里一个warning也没有errors出现errors时,相对来说比较好解决一些,通常编译器会给你明确的提示像,"syntaxerrors","unexpectedparenthesis","unexpectedendoffile"之类的,常见的errors有以下几种类型(1)语句缺少";"号例如,for(;)structbluguy{ intx;}(2)括号不匹配例如,intmain(void){if(!b
10、lueguy Compile就这样结束了,下面接着看Linking (2)Linking-链接vc6.0上是没有Linking按钮的,或许是我菜了,/没注意到vc6.0的Build把Compile与Linking合在一起了,/链接的作用是将目标代码、系统的标准启动代码和库代码结合在一起,生成可执行程序。在你Compile的时候,编译器假定所有的结构体、函数、全局变量都已经在别的文件里声明了,但这个假设并不总是成立的,链接器就是在文件中查看这些结构体、函数以及全局变量是不是已经声明了
此文档下载收益归作者所有