已经学习C和C++语言,对于Microsoft visual studio 可以用来建立一个简单工程,对其进行编译,运行,但发现很多同学对于他们用了很久的开发环境很不了解。今天对其常用且实用的debug调试进行一些简单说明。
将程序代码输入,保存。为便于说明,现假设存储的源程序文件名为1.cpp。接下来就需要进行编译了,在build选项里有三种编译方式,Compile 1.cpp,Build 1.exe, Rebuild All,Batch Build.其中Compile 1.cpp选项,只编译当前文件而不调用链接器或其它工具。输出窗口将显示编译过程检查出的错误或警告信息,在错误信息处双击,可以得到有蓝色图标提示错误代码的位置; Build 1.exe 选项 对最后修改过的源文件进行编译和链接;Rebuild
All选项 该选项允许用户编译所有的源文件,而不管它们何时曾经被修改过;Batch Build选项
该选项能单步重新建立多个工程文件,并允许用户指定要建立的项目类型.VC提供了两种目标应用程序类型 Win32 Release(发行版)、Win32 Debug(调试版)。
对于compile
1.cpp,rebuild all大家可能已经熟悉。下面就要介绍一种可以看见每步执行的调试方式。
用build->start
debug->go或者直接按F10进入,如果没有修改后没有编译,此时会有提示,would you like to build them,如果不想编译点NO,一般点YES,重新编译然后开始调试,编译不成功不能进入调试,必须修改完整。对于编译通过,运行结果不是所预想的那样,采用DEBUG。成功进入后,会出现一个菜单栏,如图所示,该菜单只会在这种情况下才会出现,一般是不会显现的(如果调试模式还没有出现,右击菜单栏空白部分,选DEBUG)。我们主要利用的是step into ,step over,step out,run
to cursor。Step
Over(F10)是单步跳过,遇到Call语句不进入。Step
Into(F11),单步追踪,遇到Call语句进入。Step Out(Shift+F11),跳出当前函数调用。Run to Cursor(Ctrl+F10),运行到光标所处位置。一般是先用f10,进行粗调试,确定函数输入输出是否正确(与自己想的一样),如不一样,则用f11进入函数体一步一步调试。
在调试过程中,肯定得监视程序中的变量。在vc6.0的右下角有一个watch窗口,专门用来设置监视变量。每个变量名后会有其被分配空间的地址或被赋予的值。对于数组,结构体等不是一个变量的,单击变量左边+符号或双击变量名,即可看到它内部每个成员被分配空间的地址或被赋予的值。在调试过程中,鼠标轻轻放在变量上也会显示该变量的值。
调试过程中,菜单条颜色转灰,无法进行调试是是程序正在堵塞执行的时候,例如:scanf,点击黑框,就是命令行输入框,按要求逐个输入,最后按enter键,这时你会发现菜单条又恢复正常颜色,你又可以正常进行调试了。遇到此种情况根据程序语句自由解决。
但是如果仅仅按F11,一般情况下无法顺利完成整个过程,很可能在按的过程中,会出现汇编语言。因为汇编语言是系统处理的结果,除非特专业人士能够看懂,其实对于我们编译程序,发现,定位,确定错误位置即可,没必要看懂它。这时按菜单跳最后一个按钮,即可恢复程序代码。再按shift+F11即可跳出。或者选择stop debug。(注:这里是因为F11进入了其他没有源代码的函数,或系统调用,或外部OBJ,例如printf,当然你想看自己程序的汇编代码,可以按快捷图标最右边那个。这里的汇编是未经优化的。)
至于什么时候会出现汇编语言,编译进入到你所不了解的地步,情况多种多样,不好分类总结出来。其实对于初学者,开发一个小工程,不了解是没问题的。记住这个函数,重新按进入调试,要进入该函数前改按F10,只来看函数返回结果,看其函数返回值判断是否出现错误。如果返回结果不正确,函数使用错误(例如scanf参数错误也会导致输入的数据格式不对,不算函数错误,如果你自己写的函数估计可能是有问题了)。下次可以设置断点,按菜单栏是手的图标,或按热建F9即可在光标停留处设置断点。程序运行到断点标志处,会不进入,当然在内部它是继续在进行编译。Output处会有函数返回值显示。将光标停在有断点处,用和建立一样的方式即可消除断点。
前面已经知道是正确,想要进入专门的某个函数,或从某一位置开始想看它的进程,用鼠标点击想要进入的函数位置, 选择Run to Cursor(Ctrl+F10), 进程会一下子到光标所在处.从它开始显示.这样更具针对性,节省操作.
现在菜单各个项功能已经大致了解,至于针对某个具体程序该如何采用有效的方式来进行调试需要每个人自己摸索.这样才能成为好的程序员.
下面有一些运行过程中自动更新的一些数据值可供检查,不难理解,随便点点就能看明白。当然,调试技术需要经验,希望大家遇到问题多调试熟了就好。本文就介绍到这里,如有不准确地方希望批评指正。
阅读(1387) | 评论(0) | 转发(0) |