C语言程序调试.docx

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一:深入了解 编译、链接、组建(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 和 errors warnings? 别小看 warnings ,它有可能会导致相当严重且极其隐蔽的 bug,尤其是在 指针管理内存 这一块,/ 常见的warning有以下几种类型 1,使用了未经初始化的变量,或者定义变量了却没有使用。 解析: 未经初始化的变量会 存一个随机值,绝大多数的时候这个值都不是你想要的,你用它,编译器能不给你warning吗,? 2,使用了一些看上去非常愚蠢的语句,编译器都看不下去了 例如, if (blueguy = 0) ??????????? printf(blueguy = 0!!); ??????? if(blueguy greengirl || hemy) ??????????? ; 3, 使用了未定义的语句 (注意,vc6.0是不会给这样的语句一个warning的) 例如, j = i++ + i++;?? //我自己都不知道自己想表达什么意思 , 呵呵 ??????? x = x0 ? 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)括号不匹配 例如, int mai

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档