VisualC++6.0调试功能这是我自己在学习时整理的,希望对大家有用.其中有几个部分的内容,如下:※MyNote全部由我截图并参考资料进行说明,这其中有大量的内容是调试过程中体会总结才写的.有不当之处请大家更正.※From《VisualC++Debugger》这本书写得非常的不错,从里面截了一些有用的图,主要是强烈推荐大家阅读这本书.※DebugMenuFromMSDN这是我从VisualC++6.0MSDNLibraryOctober2001中查来的,在MyNote中有很多是从那里参考的.强烈推荐大家看这份英文说明.※From《visualC++6.0开发工具与调试》这是我从网络上搜索到的,问题很经典,强烈推荐大家参看学习,避免不必要的错误.MyNote○常用功能:1.Restart(Ctrl+shift+F5):此debugger功能将从程序的开始(第一有效行)处全速执行,而不是从当前所跟踪的位置开始调试,这时所有变量的当前值都将被丢弃,debugger会自动停在程序的main()开始处.这时如果选择StepOver(F10)就可以逐步执行main()函数了.2.StopDebugging(Shift+F5):此debugger功能将终止(所有)调试,并返回到常规编辑状态.3.Break(此功能常常在遇到调用函数的语句时可见.):此功能将在调试过程中的debugger当前位置挂起程序的执行,然后就可以在调试状态一修改程序的代码,接着可以用ApplyCodeChanges(Alt+F10)来应用修改的代码到正在调试的程序当中.如果,当前(需要,待)可以(从DOS等窗口)输入值,挂起后将不能再输入.4.ApplyCodeChanges(Alt+F10):此功能可以在程序正在调试程序过程中应用(挂起)修改后的源代码.如,选择Break功能并修改代码后,只要选择ApplyCodeChanges(Alt+F10)就能将修改后的代码应用到正在调试的程序当中.5.ShowNextStatement(Alt+Num*):此功能将显示程序代码的下一条语句,如果源代码中找不到,则在Disassembly窗口中显示语句.当在Disassembly窗口中显示时,可以单击Disassembly返回到源代码窗口.6.StepInto(F11):此功能可以单步进入到在调试过程中所跟踪的调用函数的语句的函数内部.如,当前语句是”d.Display()”,选择StepInto(F11)后,Debugger将进入Display()函数内部并停在Display()函数内部的第一条语句上.(此时,就可以StepOver(F10)对Display()函数进行单步调试了.)7.StepOver(F10):此功能可以单步对所在函数单步调试,如果调试的语句是一个调用函数的语句时,Debugger将全速执行所调用的函数,单步(一步)通过所调用的函数,Debugger停该调用语句的下一条语句上.8.StepOut(Shift+F11):此功能将使Debugger切换回全速执行到被调用函数结束,并停在该函数调用语句的下一条语句上.当确定所调用的函数没有问题时可以用这个功能全速执行被调用函数.9.RuntoCursor(Ctrl+F10):此功能将全速执行到包含插入点光标所在的行,可以作为在插入点光标处设置常规断点的一种选择.注意,当光标处不是一个有效的执行语句时此功能将不起作用.10.Go(F5):此功能将全速执行程序直到遇到一个断点或程序结束,或直到程序暂停等待用户输入.注意,此功能最能有效的调试循环,常将断点设置在循环体内,重复的按F5全速执行循环体可以测试循环过程中的产生的变化.11.StepIntoSpecificFunction:此功能可以可以单步通过程序中的指令,并进入指定的函数调用,此功能对于函数的嵌套层不限.调试常用快捷键单步进入F11单步跳过F10单步跳出SHIFT+F11运行到光标CTRL+F10开关断点F9清除断点CTRL+SHIFT+F9Breakpoints(断点管理)CTRL+B或ALT+F9GOF5Compile(编译,生成.obj文件)CTRL+F7Build(组建,先Compile生成.obj再Link生成.exe)F7From《VisualC++Debugger》DebugMenuFromMSDNStartDebugCommands(Buildmenu)MenucommandActionGoExecutescodefromthecurrentstatementuntilabreakpointortheendoftheprogramisreached,oruntiltheapplicationpausesforuserinput.(EquivalenttotheGobuttononthetoolbar.)StepIntoSingle-stepsthroughinstructionsintheprogram,andenterseachfunctioncallthatisencountered.RuntoCursorExecutestheprogramasfarasthelinethatcontainstheinsertionpoint.Thisisequivalenttosettingatemporarybreakpointattheinsertionpointlocation.AttachtoProcessAttachesthedebuggertoaprocessthatisrunning.Thenyoucanbreakintotheprocessandperformdebuggingoperationslikenormal.Whenyoubegindebugging,theDebugmenuappears,replacingtheBuildmenuonthemenubar.Youcanthencontrolprogramexecutionusingthecommandslistedinthefollowingtable.DebugMenuCommandsthatControlProgramExecutionDebugmenucommandActionGoExecutescodefromthecurrentstatementuntilabreakpointortheendoftheprogramisreached,oruntiltheapplicationpausesforuserinput.(EquivalenttotheGobuttonontheStandardtoolbar.)WhentheDebugmenuisnotavailable,youcanchooseGofromtheStartDebugsubmenuoftheBuildmenu.RestartResetsexecutiontothefirstlineoftheprogram.Thiscommandreloadstheprogramintomemory,anddiscardsthecurrentvaluesofallvariables(breakpointsandwatchexpressionsstillapply).Itautomaticallyhaltsatthemain()orWinMain()function.StopDebuggingTerminatesthedebuggingsession,andreturnstoanormaleditingsession.BreakHaltstheprogramatitscurrentlocation.StepIntoSingle-stepsthroughinstructionsintheprogram,andenterseachfunctioncallthatisencountered.WhentheDebugmenuisnotavailable,youcanchooseStepIntofromtheStartDebugsubmenuoftheBuildmenu.StepOverSingle-stepsthroughinstructionsintheprogram.Ifthiscommandisusedwhenyoureachafunctioncall,thefunctionisexecutedwithoutsteppingthroughthefunctioninstructions.StepOutExecutestheprogramoutofafunctioncall,andstopsontheinstructionimmediatelyfollowingthecalltothefunction.Usingthiscommand,youcanquicklyfinishexecutingthecurrentfunctionafterdeterminingthatabugisnotpresentinthefunction.RuntoCursorExecutestheprogramasfarasthelinethatcontainstheinsertionpoint.Thiscommandisequivalenttosettingatemporarybreakpointattheinsertionpointlocation.WhentheDebugmenuisnotavailable,youcanchooseRunToCursorfromtheStartDebugsubmenuoftheBuildmenu.StepIntoSpecificFunctionSinglestepsthroughinstructionsintheprogram,andentersthespecifiedfunctioncall.Thisworksforanynumberofnestinglevelsoffunctions.ThefollowingadditionalcommandsappearontheDebugmenu:ExceptionsDisplaystheExceptionsdialog,whichyoucanusetospecifyhowyouwantthedebuggertohandleyourprogramexceptions.ThreadsDisplaystheThreadsdialog,whichyoucanusetosuspend,resume,orsetfocustoprogamthreads.ShowNextStatementShowsthenextstatementinyourprogramcode.Ifsourcecodeisnotavailable,displaysthestatementwithintheDisassemblywindow.QuickWatchDisplaystheQuickWatchwindow,whereyoucanworkwithexpressions.From《visualC++6.0开发工具与调试》1、如何快速地规范代码缩进格式选中所需要规范的代码,按shift+F82、如何在Release状态下进行调试Project-Setting=ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选Disable(Debug),Debutinfo选ProgramDatabase。在Link标签中选中Generatedebuginfo复选框。注:只是一个介乎Debug合Release的中间状态,所有的ASSERT、VERIFY都不起作用,函数调用方式已经是真正的调用,而不查表,但是这种状态下QuickWatch、调用队列跟踪功能仍然有效,和Debug版一样。3、Release和Debug有什么不同。