RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
cpp学习(三)使用VS进行简单调试-创新互联

接着学习一下使用VS进行简单的代码调试。非常简单,都是操作性的东西。
在学完c++以后我会继续讲解调试原理,并和大家一起打造一款自己的调试器。
首先新建一个工程,并在项目属性里面关闭SDL检查:(参考上一篇) 日后正常开发中还是要打开,用VS的安全函数比较好,由于我们的目的在于复习C语言,所以为了不必要的麻烦先关掉。
cpp学习(三)使用VS进行简单调试

成都地区优秀IDC服务器托管提供商(创新互联).为客户提供专业的BGP机房服务器托管,四川各地服务器托管,BGP机房服务器托管、多线服务器托管.托管咨询专线:028-86922220

然后我们构造一个函数Debug,函数的参数为一个数组,功能为遍历打印数组的十个元素,然后我们传入一个只有容量为5的数组,引发一个数组越界,并进行调试。
代码如下:
#include
#include
void Debug(int );
int main()
{
int arrDebug[5] = { 0,1,2,3,4 };
Debug(arrDebug);
system("pause");
return 0;
}
void Debug(int
pNum) {
for (int i = 0; i < 10; i++) {
printf("%d\n", pNum[i]);
}
}
现在运行该程序,如果你和我一样,是在一个解决方案里创建了多个项目:
cpp学习(三)使用VS进行简单调试

那你运行后会开始执行第一个创建的项目,因为VS默认停留在首项目,所以我们右键要执行的项目,将其设置为启动项目:
cpp学习(三)使用VS进行简单调试

好,现在执行该项目,得到一下结果:
cpp学习(三)使用VS进行简单调试

很明显,一定是出了问题,在本程序中我们可以很容易就发现问题所在,但是随着代码复杂程度的增加,我们不可能靠这种人肉方式来调BUG,因此需要借助调试器。

首先定位Bug,通常可以根据程序的一些输入来定位,或者在错误输出处回溯。如果是语法错误,程序会自己断下,然后再回溯。
定位到可疑函数后,在该函数处下断点(双击该行左侧即可):
cpp学习(三)使用VS进行简单调试
然后运行该程序,程序断到断点处:
cpp学习(三)使用VS进行简单调试

此时,可以单步步入,单步步过,和执行
首先试一下单步步过,F10,程序执行到该断点的下一行,
cpp学习(三)使用VS进行简单调试
再单步步过,执行完毕,可见单步步过功能,在遇到函数时不会进入函数体内,而是执行该函数的下一行代码。
再次运行项目,程序断下后单步步入,F11:
cpp学习(三)使用VS进行简单调试
进入到函数体内,此刻我们可以打开内存窗口来查看内存中的数据:
cpp学习(三)使用VS进行简单调试
在内存窗口的地址栏,输入变量名称后回车,(更好的方法是选中变量名称,直接拖到内存窗口):
cpp学习(三)使用VS进行简单调试
cpp学习(三)使用VS进行简单调试

便可得到该变量在内存中的数据,观察可得,只有五个成员。
然后我们继续单步走:
cpp学习(三)使用VS进行简单调试

就可以一步一步的观察程序的执行情况,从而找出问题所在。
如果不想调试了,可以按F5,让程序自由执行。
通常我们会在多个断点中,F5,F10,F10,配合使用调试程序。
也可以直接在函数体内下断:
cpp学习(三)使用VS进行简单调试
然后再运行程序,程序会在断点处断下。

好了,再操作一遍熟练熟练吧,虽然是操作性东西没有什么好理解的,但是学习编程的首要任务就是要学会调试…. 不然根本无法写程序。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:cpp学习(三)使用VS进行简单调试-创新互联
路径分享:http://lswzjz.com/article/gigcj.html