- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
怎样在VC6进行C语言调试
2010-09-02 20:15
【文章标题】: VC6.0中调试C语言程序简析【文章作者】: evilkis--------------------------------------------------------------------------------------VC6.0中调试C语言程序方法简析1..调试工具简介:VC6.0中有两个应用比较频繁的调试工具:(1)Memory窗口:其作用即查看相应地址中存放的内容,如图1?最左边一列为地址 右边四列的内容为内存中的内容,以16进制表示,最后一列为内存内容 的文本显示。(2)Watch窗口:其作用是监控表达式在程序运行过程中值的变化;其中要监控的表达式是我们自己输入的,如图:要查看那个变量的值的变化就在Name那一列输入变量的名字即可。2..实战应用有人说软件开发的能力一看设计能力,二看调试水平,可见调试能力对我们写程序的人来说是一项必须要掌握的技能,调试程序不仅仅可以帮助我们找出程序中的错误还能帮助我们更好的理解相关的C语言内部的东西,那我们现在就来简单的实战一下吧,首先简单说一下调试常用的几个调试快捷键当我们进入调试状态时在VC菜单栏中会出现一个Debug工具栏:其最常用的几个快捷键如下(1)?? (Step Over)F10:单步执行,遇到函数调用时,执行完函数调用返回到下一条语句。(2) (Step Into)F11:单步执行,遇到函数调用时进入到函数中执行(即进入到函数的实现代码中执行)如何进入调试状态:进入调试状态有很多方法简单说两种:(1)在程序中下个断点,然后按F5(2)直接按F101..调试第一个程序hello world!,按F10进入调试状态:一直按F10执行到size_t i=strlen(a);这句在右侧watch窗口Name下输入a,然后拖到Memory窗口,或者直接在Memory窗口输入a;如上图 可知字符数组的首地址为0012ff74,共有12个元素,a[0]在内存中为68(注意这里是16进制表示的)转换为10进制为104,相应的ascii码为h,以此类,此外我们会发现a[11]在内存中为00,其ascii码为空字符即\0,所以此时我们应该能理解字符串在字符数组中是以\0结尾的吧!2.看一下数组名与数组首地址的关系还是上面的程序 我们在Watch窗口Name列中输入a和a,和a[0]如图:通过这个可知a= =a= =a[0]也就是数组名就是数组的首地址,他是一个地址常量即指针常量指向hello world这个字符串,所谓指针常量即指针的值不能改变,但可以改变它所指向的内容,而常量指针是指 指针的值可以改变但不能改变它所指向的内容。3.看一下多字节数据在内存中的存储方式:程序如下:按F10进入调试状态,单步执行到 i=10这一行,如图可知所有未初始化的int型变量都在内存中为CCCCCCCC,在执行一步,可以看到地址0012ff7c处的值为0A000000,因为int型数据在内存中占4个字节,可以用sizeof这个操作符算一下,内存中的数据是以16进制数字表示的所以一个字节要存放两位16进制数,显然0A000000和十进制数10不匹配,这就到了我们了解多字节数据在内存中的存储方式了:下面摘自《加密与解密》第三版第一章的内容多字节数据的在内存中的存放实际与CPU有关,常见的Intel系列的芯片使用的编码方式属于Little-Endian类(这也是我们大多数使用的电脑的cpu类型),另外的是某些RISC架构的CPU,如IBM的Power-PC等属于Bid-Endian类:Little-Endian:低位字节存入地地址,高位字节存入高地址,反序排列如写入以100h开始的内存中结果为????????????? ------|----|----|---|---|---------??????? 100h|78h | 56h|34h|12h|????????? -----|----|----|---|---|--------??????????????????? -----------------------地址变高8个2进制位是1个字节 4个2进制位表示一个16进制数字所以78h要占一个字节看到这里我们因该知道在我们大部分机器里面的数据存贮应该是逆序吧,所以上图中的值应该是0000000A,转换成10进制正好是10。看到这里我们感觉到调试的重要性了吧呵呵4.调试一下数组越界的程序,众所周知C语言是不检查数组越界的,所以我们在编写程序的时候应当小心,尽量把数组的长度定义成符号常量。下面的程序改自
您可能关注的文档
- 人教版高中英语必修3Unit 4“Astronomy”(Grammar)习题课件.ppt
- 人教版高中英语必修3Unit 4“Astronomy”(Warming-up & Reading)习题课件.ppt
- 广州市专业技术人员2014年公需课《专业技术人员职业发展政策法规学习》第6讲测验答案(100分).doc
- 广东省韶关市2013届高三4月第2次调研测试数学试题(理科).doc
- 广东省深圳市外语学校2009届高三第2次质量检测数学文科试题.doc
- 广州市2007年一般 高中学生学业水平测试.doc
- 广告创意和表现形考作业选择题.doc
- 广州市2014年一般 高中考试数据统计结果.doc
- 广州市专业技术人员诚信和职业道德建设(测试答案5份).doc
- 广州海珠区2008–2009学年第一学期末调研测试(答案详细还有评分标准).doc
文档评论(0)