c语言程序逐步调试,C语言程序调试.docx

一:深入了解 编译、链接、组建(Look into Compile、Linking、Build)?(1) Compile(2) Linking(3) Build?二:断点 (Break Point)(1) 普通断点 (Nomal Break Point)(2) 条件断点 (Condition Break Point)(3) 数据断点 (Data Break Point)三:断点之后能做些什么?(What can I do after Break Point)(1)variables(2)watch(3)stack(4)memory四:断言 (Assert)五:printf()六:Log七:Trace八:虚拟内存简介(Virtual Memory Intro )九:常见的段错误 (Common Segmentation Fault)(1)堆区内存错误 (Heap Memory Errors)1,未初始化的内存仿问 (Uninitialized Memory Access)2,无效的内存仿问 (Invalid Memory Access)3,内存泄露 (Memory leaks)4,未分配内存 (Missing allocation)(2)栈区内存错误 (Stack Memory Errors)1,未初始化的内存仿问 (Uninitialized Memory Access)2,无效的内存仿问 (Invalid Memory Access)3,数组越界 (Writing off the end of the array)4,栈溢出 (Stack Overflows)十:轻松解决 内存泄漏 (Hunting Memory Leaks)?结束语:怎样尽可能的避免错误**********************************************************/下面就开始祥细讲解,/一:深入了解 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一个值, 反之亦然。例如,int main(void){}或者void main()

\o "累计分享1次" 1

4

{???? return 0;}......等等,等等,等等。/好了,warnings 就简单介绍到这里了,希望您写的程序里 一个 warning也没有errors出现errors时,相对来说比较好解决一些, 通常编译器会给你明确的提示像,"syntax errors", "unexpected parenthesis ", "unexpected end of file"之类的,常见的errors有以下几种类型(1)语句缺少 ";"号例如,for(;)struct bluguy{??? int x;}(2)括号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值