首页 > 代码库 > (转)VC6调试技巧总结b

(转)VC6调试技巧总结b

 本文转载:http://blog.csdn.net/changqiang08/article/details/7642387


vc6.0程序调试技术总结

学c语言,一直编写的都是小程序。但是在写单片机程序时,会出现一些问题,就需要程序的调试技术。在图书馆借了一本书《c语言程序设计实验教程》(西工大出版社),再结合网上一些网友的博文,在这里对vc6.0的程序调试技术简单梳理一下。

       现代程序调试的方法主要有两种:单步法、断点法。

      一、单步法

        a、step  into                 F11                单步调试

             遇到函数时,会进入到函数内部进行更深入的单步调试,若是系统库函数代码。则可能进入指令级而非源代码级的单步调试。

        b、step  over                F10                单步调试

            遇到函数时。把函数当做 “一步” 来完成调试,如遇到已调试正确的函数,或系统库函数就可以直接用step  over

        c、step   out                 F11 +  shift     退出

        d、run to cursor           F10 +  ctrl        多步调试/快步调试

        step  into和step  over的区别是step  over一直下一步,step  into 在step  over的基础上,遇到函数会进入到函数内部,以便更深入的单步调试。

        run to cursor可进行多步调试,从当前程序调试运行的程序行运行到光标所在程序行。

       二、断点法

           基本思想:在程序中,设置若干断点,在执行过程中程序连续运行下去,遇到断点程序或断点条件时停止,在停下来的地方进行单步调试。

        a、insert  breakpoint                 F9                断点设置

        b、remove  breakpoint              F9                断点删除

        c、location                                                     条件断点  

            为断点设置一个条件,条件可为表达式,当表达式发生改变时,调试结束。

        d、data                                                          数据断点

             为断点设置一个表达式(运算符+全局变量),当表达式的值发生改变时,数据断点就会到达,调试结束。

        e、message                                                   消息断点   

           windows 程序对windows消息进行截获(截获方式:窗口消息处理函数和特定信息中断),当输入消息处理函数的名字,当每次有消息被这个函数处理时,断点就会到达。

   

    (1)、条件断点   

   1、按F9,设置断点位置。


 2、按快捷键“alt+ F9”, 或通过菜单“edit/breakpoints”打开“breakpoints”对话框,选择设置的断点,如下图

3、条件断点的表达式:i==0&&j==4


4、单击OK。现在我们开始调试程序,按F5, VC会弹出一个提示对话框,提示在你设置的条件断点的中断位置:




(2)数据断点

1、第1步和条件断点一样

2、

3、




(3)消息断点

   略

三、观察法

通过单步或者断点,可以使使指定的程序停下来,vc提供多种数据观察方法来了解程序运行期间的各种信息,从而判断错误的原因。

(1)查看(watch)

vc支持查看变量、表达式和内存的值,当断点到达时,将光标移动到该变量和表达式上时停留片刻,就可以看到变量和表达式的值。

(2)定制查看(Quick Watch)

vc提供一种被称为watch的机制,查看变量、表达式的值,在断点状态下,在变量上单击右键,选择“Quick Watch ”,弹出一个“Quick Watch ”对话框,显示这个变量的值。表达式亦然,但这个表达式不能有副作用,“++”操作符会改变变量的值。

单吉Debug工具条上的“ Watch ”按钮,就出现一个“ Watch ”视图,在该视图中输入变量和表达式,就可以查看变量、表达式的值。

(3)内存查看(memory)

由于指针指向的数组,“ Watch ”只能查看第一个元素的值,为了显示其他元素,可以使用memory功能。单吉Debug工具条上的“memory ”按钮,就出现一个“memory ”视图,在该视图中输入地址和数组名,就可以显示该地址指向的内存的内容。

(4)变量查看(varibles)


(5)寄存器查看(Registers)

单吉Debug工具条上的“ Registers ”按钮,就出现一个“ Registers  ”视图,显示当前所有寄存器的值。

(6)调用堆栈(Call Stack )

调用堆栈反映了当前断点处函数是被哪些函数按照什么顺序调用的。单吉Debug工具条上的“ Call Stack ”按钮,就出现一个“Call Stack ”对话框,在该对话框显示了一个调用序列,最上面的是当前函数,往下依次是调用函数的上级函数。单击对应的函数,就可以跳转到对应的函数中去。

(7)反汇编视图(Disassembly)。



另:先下断点,然后按F5或者点击Debug->Start Debuging程序停在断点处。
然后点击按钮 Debug->Windows->DisAssambly

可以找到各个查看窗口

(转)VC6调试技巧总结b