如何在vc6进行c语言调试

如何在vc6进行c语言调试

ID:10206989

大小:597.00 KB

页数:5页

时间:2018-06-12

如何在vc6进行c语言调试_第1页
如何在vc6进行c语言调试_第2页
如何在vc6进行c语言调试_第3页
如何在vc6进行c语言调试_第4页
如何在vc6进行c语言调试_第5页
资源描述:

《如何在vc6进行c语言调试》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、2010-09-0220:15【文章标题】:VC6.0中调试C语言程序简析【文章作者】:evilkis--------------------------------------------------------------------------------------VC6.0中调试C语言程序方法简析1..调试工具简介:VC6.0中有两个应用比较频繁的调试工具:(1)Memory窗口:其作用即查看相应地址中存放的内容,如图1 最左边一列为地址右边四列的内容为内存中的内容,以16进制表示,最后一列为内存内容的

2、文本显示。(2)Watch窗口:其作用是监控表达式在程序运行过程中值的变化;其中要监控的表达式是我们自己输入的,如图:要查看那个变量的值的变化就在Name那一列输入变量的名字即可。2..实战应用有人说软件开发的能力一看设计能力,二看调试水平,可见调试能力对我们写程序的人来说是一项必须要掌握的技能,调试程序不仅仅可以帮助我们找出程序中的错误还能帮助我们更好的理解相关的C语言内部的东西,那我们现在就来简单的实战一下吧,首先简单说一下调试常用的几个调试快捷键当我们进入调试状态时在VC菜单栏中会出现一个Debug工具栏:

3、其最常用的几个快捷键如下(1)  (StepOver)F10:单步执行,遇到函数调用时,执行完函数调用返回到下一条语句。(2)(StepInto)F11:单步执行,遇到函数调用时进入到函数中执行(即进入到函数的实现代码中执行)如何进入调试状态:进入调试状态有很多方法简单说两种:(1)在程序中下个断点,然后按F5(2)直接按F101..调试第一个程序helloworld!,按F10进入调试状态:一直按F10执行到size_ti=strlen(a);这句在右侧watch窗口Name下输入&a,然后拖到Memory窗口

4、,或者直接在Memory窗口输入&a;如上图可知字符数组的首地址为0012ff74,共有12个元素,a[0]在内存中为68(注意这里是16进制表示的)转换为10进制为104,相应的ascii码为h,以此类,此外我们会发现a[11]在内存中为00,其ascii码为空字符即'',所以此时我们应该能理解字符串在字符数组中是以结尾的吧!2.看一下数组名与数组首地址的关系还是上面的程序我们在Watch窗口Name列中输入a和&a,和&a[0]如图:通过这个可知a==&a==&a[0]也就是数组名就是数组的首地址,他

5、是一个地址常量即指针常量指向"helloworld"这个字符串,所谓指针常量即指针的值不能改变,但可以改变它所指向的内容,而常量指针是指指针的值可以改变但不能改变它所指向的内容。3.看一下多字节数据在内存中的存储方式:程序如下:按F10进入调试状态,单步执行到i=10这一行,如图可知所有未初始化的int型变量都在内存中为CCCCCCCC,在执行一步,可以看到地址0012ff7c处的值为0A000000,因为int型数据在内存中占4个字节,可以用sizeof这个操作符算一下,内存中的数据是以16进制数字表示的所以一

6、个字节要存放两位16进制数,显然0A000000和十进制数10不匹配,这就到了我们了解多字节数据在内存中的存储方式了:下面摘自《加密与解密》第三版第一章的内容多字节数据的在内存中的存放实际与CPU有关,常见的Intel系列的芯片使用的编码方式属于Little-Endian类(这也是我们大多数使用的电脑的cpu类型),另外的是某些RISC架构的CPU,如IBM的Power-PC等属于Bid-Endian类:Little-Endian:低位字节存入地地址,高位字节存入高地址,反序排列如将12345678h写入以100

7、h开始的内存中结果为             ------

8、----

9、----

10、---

11、---

12、---------       100h

13、78h

14、56h

15、34h

16、12h

17、         -----

18、----

19、----

20、---

21、---

22、--------                   ----------------------->地址变高8个2进制位是1个字节4个2进制位表示一个16进制数字所以78h要占一个字节看到这里我们因该知道在我们大部分机器里面的数据存贮应该是逆序吧,所以上图中的值应该是000000

23、0A,转换成10进制正好是10。看到这里我们感觉到调试的重要性了吧呵呵4.调试一下数组越界的程序,众所周知C语言是不检查数组越界的,所以我们在编写程序的时候应当小心,尽量把数组的长度定义成符号常量。下面的程序改自科锐back老师来测试大家C语言功底的第二道题目:原题目在http://bbs.pediy.com/showthread.php?t=51839程序如下:此程序在

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。