VC、VS2005调试技巧

本文详述了VC和VS2005的调试技术,包括不同类型的断点设置,如位置相关断点和逻辑断点,以及与Windows消息相关的断点。还介绍了VC的常用快捷键,如F5运行、F9设置断点、F10和F11逐步调试。同时,文章提及了项目文件类型及其作用,如.dsp和.dsw项目文件,以及环境参数设置的重要性。
摘要由CSDN通过智能技术生成

一、 引言

本文主要介绍以下几方面内容:


常见编译错误
VC调试器
VC快捷键
VC项目文件说明
环境参数的设置


二、常见编译错误 

1. Fatal Error C1010                        
unexpected end of file while looking for precompiled header directive
这一般是由于使用了参数/Yu“stdafx.h”,意思是在每个文件中都应该使用#include来包含这个头文件。一般改正,就是在每个CPP文件中包含这个文件就可以。

l2. Error C2065            
 undeclared identifier
调用的方法或变量没有定义。

l3. warning C4700
local variable ‘p’ used without having been initialized
使用的变量未经初始化。

l4. LNK2001
unresolved external symbol “symbol”(不确定的外部“符号”)。
如果连接程序不能在所有的库和目标文件内找到所引用的函数、变量或标签,将产生此错误消息。一般来说,发生错误的原因有两个:

一是所引用的函数、变量不存在、拼写不正确或者使用错误;

其次可能使用了不同版本的连接库。


三、VC调试器

1. 调试环境的建立 

在VC中每当建立一个工程(Project)时,VC会为你建立两个版本,Release版本,和Debug版本(默认)。
Release版本是当程序完成后,准备发行时用来编译的版本;
Debug版本是用在开发过程中进行调试时所用的版本。
Debug 版本当中,包含着Microsoft格式的调试信息,不进行任何代码优化,而在Release版本对可执行程序的二进制代码进行了优化,其中不包含任何的调试信息。
在新建立的工程中,你所看到是Debug版本,若要选择Release版本,可以选择菜单Project中的Setting命令,这时屏幕上面弹出Project Setting对话框,在Setting For下拉列表中选择Release。


                                                                                           vc 图


                                                                                           vs2005 图

2. 断点(breakpoint)
分类:在VC中,你可以设置多种类型的断点,我们可以根据断点的性质把断点分为三类:
一、与位置有关的断点;(F9)

1. 与位置有关的逻辑断点——到点条件成立才断
有的时候你可能并不需要程序每次运行到这儿都停下来,而是在满足一定条件的情况下才停下来,这时你就需要设置一种与位置有关的逻辑断点。要设置这种断点我们只需要在Edit中选中Breakpoint项,则弹出Breakpoint对话框,选其中的Location标签,在Location页面中单击Condition按钮,在Expression编辑框中写出你的逻辑表达式,如X>=3或a+b>25,最后按OK返回。这种断点主要是由其位置发生作用的,但也结合了逻辑条件,使之更灵活。 如图:



2. 在在汇编代码上设立断点:

  有时我们需要进入程序的汇编代码,更深入地调试程序,因此要在汇编代码上设立断点。要设立这种断点我们只需选择Debug Window中的Disassembly子命令,这时汇编窗口将会出现在屏幕上。在汇编窗口中你将看到对应于源程序的汇编代码,其中源程序是用黑体字显示,下面是且对应的汇编代码。要设立断点,我们只需将光标移到你想设断点处然后点击工具条上的Insert/Remove Breakpoints 按钮,此后你将会看到一个红圆点出现在该汇编代码的右边。

二、与逻辑条件有关的断点;

1. 逻辑条件触发断点的设置 ;
– 选中Breakpoint对话框中的DATA标签;
– DATA页面中的Expression编辑框中写出你的逻辑表达式,如(6==sum);


l2.监视表达式发生变化断点;
 – 选中Breakpoint对话框中的DATA标签;
 – 在Expression编辑框中写出你需要监视的表达式;

l3.监视数组发生变化的断点
– 选中Breakpoint对话框中的DATA标签;
– 在Expression编辑框中写出你需要监视数组名;
– 在Number of Elements 编辑框输入你需要监视数组元素的个数;

l4.监视由指针指向的数组发生变化的断点;
– 选中Breakpoint对话框中的DATA标签;
– 在Expression编辑框中输入形如*pointname,其中*pointname为指针变量名;
– 在Number of Elements 编辑框输入你需要监视数组元素的个数;

l 5.监视外部变量发生变化的断点;
– 选中Breakpoint对话框中的DATA标签;
– 在Expression编辑框中输入变量名;
– 点击在Expression编辑框的右边的下拉键头;
– 选取Advanced选项,这时Advanced Breakpoint 对话框出现;
– 在context框中输入对应的函数名和(如果需要的话)文件名;

三、与WINDOWS消息有关的断点;

l注意:此类断点只能工作在x86 或 Pentium 系统上。
– 选中Breakpoint对话框中的Message标签;
– 在Break At WndProc 编辑框中输入Windows 函数的名称;
– 在Set One Breakpoint From Each Message To Watch下拉列表框中选择对应的消息;

应用断点:如何控制程序的运行
当我们从菜单Build到子菜单Start Debuging 选择Go 程序开始运行在Debug状态下,程序会由于断点而停顿下来后,可以看到有一个小箭头,它指向即将执行的代码。随后,我们就可以按要求来控制程序的运行:其中有四条命令:Step over, step Into , Step Out ,Run to Cursor 。
Step over 的功能是运行当前箭头指向的代码(只运行一条代码)。F10
Step Into的功能是如果当前箭头所指的代码是一个函数的调用,则用Step Into 进入该函数进行单步执行。F11
Step Out的功能是如当前箭头所指向的代码是在某一函数内,用它使程序运行至函数返回处。Shift F11
Run to Cursor的功能是使程序运行至光标所指的代码处。Ctrl F10

3. VC调试器——查勘现场 
l 查看工具的使用
调试过程中最重要的是要观察程序在运行过程中的状态,这样我们才能找出程序的错误之处。这里所说的状态包括各变量的值,寄存中的值,内存中的值,堆栈中的值 ,为此我们需要利用各种工具来帮助我们察看程序的状态。
先看一下这张图,然后再看下面的介绍:


1. 弹出式调试信息泡泡(Data Tips Pop_up Information)
当程序在断点停下来后,要观察一个变量或表达式的值的最容易的方法是利用调试信息泡泡。要看一个变量的值,只需在源程序窗口中,将鼠标放到该变量上,你将会看到一个信息泡泡弹出,其中显示出该变量的值。要查看一个表达式的值,先选中该表达式,仍后将鼠标放到选中的表达式上,同样会看到一个信息泡泡弹出以显示该表达式的值。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值