- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【程序设计实践】实验报告_2007011801_试验六
实验六 代码调试和代码调整
一、实验目的
1.???掌握C++代码的调试方法和技巧;
2.了解程序性能和代码调整的关系,掌握主要的代码调整策略和方法。
二、实验要求
1.通过实际调试,学习C++代码的调试方法和技巧。
2.通过实际编程,了解程序性能和代码调整的关系,学习主要的代码调整策略和方法。
三、实验内容和结果
1.简单调试
(1)修正语法错误:包括未定义或不合法的标识符,如函数名、变量名和类名等;数据类型或参数类型及个数不匹配等。
程序生成后,在“输出”窗口中双击错误信息项,定位到相应代码;按Ctrl+Shift+F12显示下一个错误,并定位到相应的源代码行。
(2)使用断点:
快捷方式:在欲设断点的代码行按快捷键F9,或在需要设置断点的位置上右击鼠标,在弹出的快捷菜单中选择“断点”——〉“插入断点”。(取消断点:在该代码行按F9,或者在该行右击鼠标,选择“删除断点”)
使用“断点”窗口
选择“调试”——〉“窗口”——〉“断点”——〉选中断点,点击鼠标右键,可以设置断点的“命中次数”(当到达断点位置并且满足条件时,断点被命中。命中次数是指断点被命中的次数)
选择“调试”——〉“窗口”——〉“断点”——〉选中断点,点击鼠标右键,可以设置“条件”
说明:“调试”——〉“窗口”——〉“断点”菜单命令,显示窗口。该窗口列出了程序中用户设置的所有断点。可以在此删除断点或设置断点属性。
(3)控制程序运行
选择“调试”——〉“启动调试”菜单或按快捷键F5,调试器启动后会由于断点而停顿下来,接下来
选择“调试”——〉“逐语句”或按快捷键F11,逐语句执行。
选择“调试”——〉“逐过程”或按快捷键F10,不进入函数调用内部。
在源代码文档窗口中右击鼠标,从弹出的快捷菜单中选择“运行到光标处”,则程序执行到光标所指的代码位置处中断。如果光标位置前有断点,则程序执行首先会在断点处中断。
说明:调试过程中,可以选择“调试”——〉“停止调试”或单击工具栏上的“停止”按钮停止调试或用快捷键Shift+F5。
(4)查看变量的值。
调试器提供一些窗口,来显示各种不同的调试信息。 “自动窗口”和“调用堆栈”在调试启动后自动在开发环境底部显示。
用递归进行阶乘的计算程序如下(尚未调试)
#include stdafx.h
using namespace System;
int Factorial(int number)
{
if(number==1)
{
return 1;
}
else
{
return number*Factorial(number-1);
}
}
int main(arraySystem::String ^ ^args)
{
n= Int32::Parse(Console::ReadLine());
fac=Factorial(n);
Console::WriteLine(fac);
Console::ReadLine();
return 0;
}
对上述程序,生成解决方案,在输出窗口中双击错误信息项,定位到相应代码,修改程序;定位到下一个错误的源代码行,修改程序;令编译通过没有错误。
分别用两种方式在fac=Factorial(n);语句前插入断点;
按快捷键F5启动程序;
遇到断点后,按F11逐语句执行程序;在自动窗口中查看number值的变化,以及调用堆栈处看堆栈的情况,直到程序运行结束。观察整个过程。
按快捷键重新F5启动程序;
遇到断点后,按F10,观察程序运行情况。
删除断点后,在源代码文档窗口中右击鼠标,从弹出的快捷菜单中选择“运行到光标处”,观察程序运行情况。
用循环进行阶乘计算
#include stdafx.h
using namespace System;
int Factorial(int number)
{
int mResult=1;
for(int i=2;i=number;i++)
{
mResult=mResult*i;
}
return mResult;
}
int main(arraySystem::String ^ ^args)
{
int n,fac;
n= Int32::Parse(Console::ReadLine());
fac=Factorial(n);
Console::WriteLine(fac);
Console::ReadLine();
return 0;
}
对上述程序,将断点设置在mResult=mResult*i;语句行,将条件设置为mResult==6。开始运行程序,从界面输入5,观察程序运行情况。
结论:当程序运行结果为m
文档评论(0)