1、Restart(Ctrl+shift+F5):此debugger功能将从程序的开始(第一有效行)处全速执行,而不是从当前所跟踪的位置开始调试,这时所有变量的当前值都将被丢弃,debugger会自动停在程序的main()开始处.这时如果选择Step Over(F10)就可以逐步执行main()函数了. (2)Stop Debugging(Shift+F5):此debugger功能将终止(所有)调试,并返回到常规编辑状态. (3)Break(此功能常常在遇到调用函数的语句时可见.):此功能将在调试过程中的debugger当前位置挂起程序的执行,然后就可以在调试状态修改程序的代码,接着可以用Appl
2、y Code Changes(Alt+F10)来应用修改的代码到正在调试的程序当中.如果,当前(需要,待)可以(从DOS等窗口)输入值,挂起后将不能再输入. (4)Apply Code Changes(Alt+F10):此功能可以在程序正在调试程序过程中应用(挂起)修改后的源代码.如,选择Break功能并修改代码后,只要选择Apply Code Changes(Alt+F10)就能将修改后的代码应用到正在调试的程序当中. (5)Show Next Statement(Alt+Num*):此功能将显示程序代码的下一条语句,如果源代码中找不到,则在Disassembly窗口中显示语句.当在Disa
3、ssembly窗口中显示时,可以单击Disassembly 返回到源代码窗口. (6)Step Into(F11):此功能可以单步进入到在调试过程中所跟踪的调用函数的语句的函数内部. (7)Step Over(F10):此功能可以单步对所在函数单步调试(跳过函数内部),如果调试的语句是一个调用函数的语句时, Debugger将全速执行所调用的函数,单步(一步)通过所调用的函数,Debugger停该调用语句的下一条语句上. (8)Step Out(Shift+F11):此功能将使Debugger切换回全速执行到被调用函数结束,并停在该函数调用语句的下一条语句上.当确定所调用的函数没有问题时可以用
4、这个功能全速执行被调用函数. (9)Run to Cursor(Ctrl+F10):此功能将全速执行到包含插入点光标所在的行,可以作为在插入点光标处设置常规断点的一种选择.注意,当光标处不是一个有效的执行语句时此功能将不起作用. (10)Go(F5):此功能将全速执行程序直到遇到一个断点或程序结束,或直到程序暂停等待用户输入.注意,此功能最能有效的调试循环,常将断点设置在循环体内,重复的按F5全速执行循环体可以测试循环过程中的产生的变化.步骤2:选择Step Over(F10),开始调试程序。如下图:步骤3:按Step Over(或者F11)执行单步运行。步骤4:当执行到某个函数后,选择Ste
5、p Into(F11),进入该函数内部,如下图所示:(1)执行到函数total();(2):选择Step Into,进入函数内部:步骤5:当执行到某个函数,然后执行Step over,则跳过该函数继续往下执行:(1) 执行到函数total ();执行Step Over,跳过函数total(),执行函数average()。步骤6:当进入某个函数后,执行Step Out,则跳出该函数。(1): 进入函数total()内部: 执行Step Out,则跳出函数total():步骤7:Run to Cursor :运行至光标所在行暂停。步骤8:通过界面下方的窗口,可以查看变量的值,右下方watch窗口可
6、以根据需要,添加额外变量score和stu,以便对比观察。(1):赋完初值后score的值如下,分配的内存地址首地址为0x0012ff20:(2)运行完函数total后sum的值为55:(3)运行完函数average后av的值为5,从中可以发现是子程序average()中语句“av=sum/n”错误,av被除取整了。步骤9:断点运行(1) 设在函数total()第一行和最后一行各设置一个断点,按F9或者点工具栏中的小手,在鼠标光标停留处设置断点,如下图:(2)选择全速运行(F5),则程序运行到断点处,在watch窗口中发现stu的地址也为0x0012ff20,和原来score的首地址相同,这也
7、说明了在函数调用时,如果传递方式为地址传送,则形参和实参是共用同一个内存地址的,如下图:(3)再按F5,运行到total函数末尾,则sum的值为55,stu的地址变为0x0012ff48,程序中每个数组元素占4个内存单元,所以每执行一次“stu+”,stu的地址就增加4个单元。步骤10:选择Stop Debugging 停止调试。附录:#includeint total(int *stu,int n);float average(int sum,int n);void main() int score10=1,2,3,4,5,6,7,8,9,10,sum; float av; sum=total(score,10); av=average(sum,10); printf(Average is:%2f,av);int total(int *stu,int n) int i; float sum=0; for(i=0;in;i+) sum+=*stu; stu+; return sum;float average(int sum,int n) av=sum/n; return av;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1