在VC6.0中的调试

来源:互联网 发布:tensorflow syntaxnet 编辑:程序博客网 时间:2024/06/02 19:10

        调试,真心不喜欢这个过程,可是程序bug又必须找出来,真是悲催说实话,我是根据自己的兴趣报的专业,可是编程这一体力加脑力的活动,一度让我有选错行的感觉,算啦,不牢骚了,说说如何调试程序吧。说实话,我原来印象里对调试是没有什么概念的,觉得你设置好了断点,在watch窗口下查看变量值就可以了,但是实际上的调试过程和方法并没有那么简单。

       1.设置普通断点,F9即可(注意:程序执行到断点的这一句程序并没有执行),F10执行下一行程序,如果下一行程序要调用到一个函数,F10是并不进入函数体中的,但是F11可以跳转到函数体中。

       2.设置条件断点,按Ctrl+B打开BreakPoints(断点)对话框,明确Break at是在第几行(点击有三角按钮,会默认选中光标所在的当前行),然后单击Condition按钮,设置断点条件(注意:如果表达式是非法的,则断点设置失败)。(真心讨厌的很,我每次调试时,老是出现一个黑色的对话框,并且停止调试了(shift F5),还是关不了,只能讲VC完全关闭,最后我在网上找了很多方法解决了这个问题,为了不让大家麻烦,在这给大家说一下:在VC的安装目录下C:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev98\Bin,替换掉DM.dll和TLLOC.dll这两个文件,(在我的资源中可以下载而且不要分哦))。

      3.设置数据断点,和上面不同也就是表达式,换成了一个全局变量,并且在断点对话框中,选中data选项卡,然后输入全局变量名,那么当这个全局变量的值发生给变时,程序就会中断。

      4.设置消息断点(就是指断点与消息及相应的消息处理函数),当某个消息处理函数处理了一个断点消息,程序将在消息处理函数处中断。在断点对话框中的Messages选项卡中,进行设置。(这个在MFC工程中应该会得到应用,但是说实话,这个我没用过,我会尽快的做出补充的)。

以上所说的都是断点设置,下面是调试窗口的介绍:

      1.watch窗口,查看变量值。(快捷键:Alt+3)直接输入变量名,回车就可以看见对应的值了。

      2.Call Stack 窗口查看函数的调用(Alt+7)。

     3.Memory窗口查看对象的内存信息(Alt+6),输入数组名,看以查看相应的元素地址和它的值。

     4.Variables窗口,用于显示当前执行函数上下文可见的变量信息(Alt+4)。

    5.Disassembly窗口查看反汇编代码(Alt+8),(感觉没啥用的),但是在这个窗口中可以发现,编译器在调用某个方法时,会产生大量的附加代码初始化参数堆栈,方法执行结束后,会产生一些附加代码释放参数的堆栈。

      附加:内存泄露检查: CAbougDlg *pDlg=new CAboutDlg;   pDlg—>Domodal(); delete pDlg; 在对话框关闭后及时释放。

      好的编程习惯,能给我们带来更大的编程乐趣。