vc6程序调试中常见问题和调试方法介绍(1)

掌握debug能力可以快速解决编程中遇到的问题,但是很多初学者并不会,本文主要简单介绍如何使用VC6++进行程序的调试。
一、首先介绍下使用debug前可能存在的问题:
1、找不到debug窗口
解决方法:在图中灰色区域右击,将Debug勾选上,就出现Debug窗口
在这里插入图片描述
在这里插入图片描述
2、运行Debug时出现的问题,常见的包括:
(1)在这里插入图片描述
这是由于系统不兼容造成的,我的电脑是WIN10的,解决办法为:右键点击快捷方式–属性–兼容性–勾选以管理员身份运行此程序–兼容模式–以兼容模式运行此程序–选择winxp sp2或者winxp sp3
如果还不行,甚至是出现打开后闪退的现象,那么更改VC98–bin–MSDEV.exe 为VC98–bin–MSDEV3exe ,一般这样是可以了,如果不行试着重启电脑
最终方案就是重装vc6了.
(2) 调试过程比较顺利,但是调试到最后一个花括号,会弹出窗口提示:Please enter the path for CRTO.C,寻找自己的安装路径下有没有这个文件,如果没有就是安装的不完整,最好重装一个完整版的。如果不想重装,点击取消,会进入到汇编界面,继续调试,也是没有问题的。如果觉得烦,就在程序最后F5跳过,就不会出现了。
二、以一个实例程序为例,介绍程序调试方法
先放程序:

 #include<iostream>
#include<math.h>
using namespace std;
int sum(int nto,int nfrom=1)
{
	int nsum;
	for(int i=nfrom;i<nto;i++)
		nsum+=i;
	return nsum;
}
void main()
{
	cout<<sum(10)<<endl;
	cout<<sum(11,1)<<endl;
	cout<<sum<<(12,1)<<endl;
	cout<<sum(100,1)<<endl;
}

Attention:这里故意设置了一个错误,nsum没有给初值0
介绍debug窗口各个控件作用:
在这里插入图片描述
1、跳入函数体:比如执行cout<<sum(10)<<endl;就是先跳到sum函数里边,一步步执行,再跳出函数输出
2、直接执行函数:不再进入函数内部:就是调试不再进入函数体,直接运算输出,也可以作单步运行用
3、运行到光标位置停下来:程序直接运行到光标所在位置停下来
在这里插入图片描述
1、compile 编译
将我们编写的c++程序进行语法检查,将其转化成计算机可以运行的“01010…”形式的二进制文件。compile过程生成“.obj”文件或".o"文件,这个和编译器有关,vc++中是“.obj”文件。
2、build 连接
build的作用是将你在程序中调用到的类库融合到你的程序中,比如你用到了cout函数,那么内部实现该函数的类库代码就会添加到你的程序中。build过程生成“.exe”文件。这个可以直接运行。
3、execute program 执行程序
如果程序没有错误,直接运行程序;如果程序有改动,或者没有编译、连接的话,就相当于编译–连接–运行;如果之前编译–连接过了,直接运行。
4、go 运行
go与调试环境相关联,起打开调试器的作用。所谓的调试器,是让你知道程序变量值的问题。使用调试器的方法,一般你要先点击go键后面的Insert/Remove breakpoint键,这个键可以标记你所要知道的程序行。意思就是先按那个键标记行,然后再点击go,就可以看到程序调试器了。
5、insert/remove breakpoint 插入/删除断点
设置断点,按go后,程序运行到断点停下来,继续按下go,程序运行到下一个断点停下来。如果不设置断点,输出结果面板一闪关闭。ctrl+b可以调出所有断点的显示信息窗口,在这里可以查看各个断点的位置,删除断点等。

现在调试这个程序:
1、F10单步运行这个程序,开始时出现一个黄色光标,说明将要执行哪一行;程序自动寻找,从main函数开始
在这里插入图片描述
2、继续F10,即将执行第一个函数调用
在这里插入图片描述
这时如果继续按F10,那么就会直接执行函数运算并输出,按F11,就可以进入到函数体内观察运行情况,我们按下F11
在这里插入图片描述
这时继续单步运行,按F10,光标移动到int nsum,即将执行;依次类推;
在这里插入图片描述
3、我们可以打开view–debug windows,调出我们想观察的调试信息,我们打开 watch(监视) 和call stack(调用堆栈)
watch 窗口可以显示变量、地址等信息,比如我们想看看nsum 、i的执行情况,有两种方法:第一是使用
quick watch,右键选择或者debug功能条那个小眼镜,将想要显示的变量添加进去;或者在程序段中选择该变量,拖入watch 窗口中。按delete即可删除watch窗口中选中的变量
在这里插入图片描述
左键长按nsum拖入watch中
在这里插入图片描述
call stack窗口可以显示当前栈内信息,如图:
在这里插入图片描述
程序执行到了这里
在这里插入图片描述
当前信息:第八行,执行sum(int 10,int 1)
按照此步骤继续进行调试,实现自己的目的。

在下一篇博客中继续讲解

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值