使用VC6.0对C语言程序进行调试的基本手段分享

  次阅读 作者:智能小宝 来源:互联网 2016-01-26 10:13 我要评论(0)

这篇文章主要介绍了用VC6.0开发c语言程序的时候调试代码的一些小技巧,需要的朋友可以参考下

(1)设置固定断点或临时断点

所谓断点,是指定程序中的某一行,让程序运行至该行后暂停运行,使得程序员可以观察分析程序的运行过程中的情况。这些情况一般包括:

①在变量窗口(Varibles)中观察程序中变量的当前值。程序员观察这些值的目的是与预期值对比,若与预期值不一致,则此断点前运行的程序肯定在某个地方有问题,以此可缩小故障范围。例如以下程序是计算cos(x)并显示,运行时发现无论x输入为多少,结果都是0.046414。

复制代码 代码如下:

#include <stdio.h>

#include <math.h>

void main()

{

intx;

printf("Please input x:");

scanf("% d", &x);

printf("cos(x)=%fn", cos(x));

}

在该程序中,若你没有看到问题程序较长、较复杂时很难看出问题所在,则应该使用调试手段定位故障位置。

②在监控窗口(Watch)中观察指定变量或表达式的值。当变量较多时,使用Varibles窗口可能不太方便,使用Watch窗口则可以有目的、有计划地观察关键变量的变化。

③在输出窗口中观察程序当前的输出与预期是否一致。同样地,若不一致,则此断点前运行的程序肯定在某个地方有问题。

④在内存窗口(Memory)中观察内存中数据的变化。在该窗口中能直接查询和修改任意地址的数据。对初学者来说,通过它能更深刻地理解各种变量、数组和结构等是如何占用内存的,以及数组越界的过程。

⑤在调用堆栈窗口(Call Stack)中观察函数调用的嵌套情况。此窗口在函数调用关系比较复杂或递归调用的情况下,对分析故障很有帮助。

(2)单步执行程序

让 程序被一步一步(行)地执行,观察分析执行过程是否符合预要求。例如,以下程序预期的功能是从键盘上读入两个数(x和y),判断x和y是否相等,相等则在 屏幕上显示x=y,不相等则显示x<>y。这是要求实现的功能,但程序实际的运行状况却是:无论输入什么,都会在屏幕上显示x=y和x& amp; lt;>y,程序肯定有问题,但表面上看却可能找不到问题所在,使用单步执行,则能定位故障点,缩小看的范围。例如,在单步执行的过程中,若输入2,3 ,发现x和y的值的确变成了2和3,此时按道理不应执行 printf("x=yn"); ,但单步跟踪却发现被执行了,因此多半问题出在if (x = y) 。

复制代码 代码如下:

#include <stdio.h>

void main()

{

intx, y;

printf("Please input x, y:");

scanf("%d,%d", &x, &y);

if (x = y)

{

printf("x=yn");

}

else;

{

printf("x<>yn");

}

}

在单步执行的过程中,应灵活应用Step Over、Step Into、Step Out、Run to Cursor等方法,提高调试效率。建议在程序调试过程中,记住并使用 Step Over、Step Into、Step Out、Run to Cursor 等菜单项的快捷键,开始时可能较生疏、操作较慢,但坚持一段时间就能生巧、效率提高。

(3)使用断言

断 言是对某种假设条件进行检查(可理解为若条件成立则无动作,否则应报告),它可以快速发现并定位软件问题,同时对系统错误进行自动报警。断言可以对在系统 中隐藏很深,用其它手段极难发现的问题进行定位,从而缩短软件问题定位时间,提高系统的可测性。实际应用时,可根据具体情况灵活地设计断言。

使用断言时,必须在程序的开头加上:

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...