引言
本文主要介绍以下几方面内容:
- 常见编译错误
- VC调试器
- VC快捷键
- VC项目文件说明
- 环境参数的设置
常见编译错误
-
Fatal Error C1010
unexpected end of file while looking for precompiled header directive
这一般是由于使用了参数/Yu“stdafx.h”,意思是在每个文件中都应该使用#include来包含这个头文件。一般改正,就是在每个CPP文件中包含这个文件就可以。 -
Error C2065
undeclared identifier
调用的方法或变量没有定义。 -
warning C4700
local variable ‘p’ used without having been initialized
使用的变量未经初始化。 -
LNK2001
unresolved external symbol “symbol”(不确定的外部“符号”)。
如果连接程序不能在所有的库和目标文件内找到所引用的函数、变量或标签,将产生此错误消息。一般来说,发生错误的原因有两个:- 一是所引用的函数、变量不存在、拼写不正确或者使用错误;
- 其次可能使用了不同版本的连接库。
VC调试器
调试环境的建立
在VC中每当建立一个工程(Project)时,VC会为你建立两个版本,Release
版本和Debug
版本(默认)。
Release
版本是当程序完成后,准备发行时用来编译的版本;
Debug
版本是用在开发过程中进行调试时所用的版本。
Debug
版本当中,包含着Microsoft格式的调试信息,不进行任何代码优化,而在Release
版本对可执行程序的二进制代码进行了优化,其中不包含任何的调试信息。
在新建立的工程中,你所看到是Debug
版本,若要选择Release
版本,可以选择菜单Project
中的Setting
命令,这时屏幕上面弹出Project Setting对话框
,在Setting For下拉列表中选择Release
。
断点(breakpoint)
分类:在VC中,你可以设置多种类型的断点,我们可以根据断点的性质把断点分为三类:
与位置有关的断点;(F9)
与位置有关的逻辑断点——到点条件成立才断
有的时候你可能并不需要程序每次运行到这儿都停下来,而是在满足一定条件的情况下才停下来,这时你就需要设置一种与位置有关的逻辑断点。要设置这种断点我们只需要在Edit中选中Breakpoint项
,则弹出Breakpoint对话框,选其中的Location标签,在Location页面中单击Condition按钮
,在Expression编辑框中写出你的逻辑表达式,如X>=3
或a+b>25
,最后按OK返回。这种断点主要是由其位置发生作用的,但也结合了逻辑条件,
在在汇编代码上设立断点
有时我们需要进入程序的汇编代码,更深入地调试程序,因此要在汇编代码上设立断点。要设立这种断点我们只需选择Debug Window
中的Disassembly
子命令,这时汇编窗口将会出现在屏幕上。在汇编窗口中你将看到对应于源程序的汇编代码,其中源程序是用黑体字显示,下面是且对应的汇编代码。要设立断点,我们只需将光标移到你想设断点处然后点击工具条上的Insert/Remove Breakpoints
按钮,此后你将会看到一个红圆点出现在该汇编代码的右边。
与逻辑条件有关的断点
逻辑条件触发断点的设置
- 选中Breakpoint对话框中的DATA标签
- DATA页面中的Expression编辑框中写出你的逻辑表达式,如(6==sum);
监视表达式发生变化断点
- 选中Breakpoint对话框中的DATA标签;
- 在Expression编辑框中写出你需要监视的表达式;
监视数组发生变化的断点
- 选中Breakpoint对话框中的DATA标签;
- 在Expression编辑框中写出你需要监视数组名;
- 在Number of Elements 编辑框输入你需要监视数组元素的个数;
监视由指针指向的数组发生变化的断点
- 选中Breakpoint对话框中的DATA标签;
- 在Expression编辑框中输入形如pointname,其中pointname为指针变量名;
- 在Number of Elements 编辑框输入你需要监视数组元素的个数;
监视外部变量发生变化的断点
- 选中Breakpoint对话框中的DATA标签;
- 在Expression编辑框中输入变量名;
- 点击在Expression编辑框的右边的下拉键头;
- 选取Advanced选项,这时Advanced Breakpoint 对话框出现;
- 在context框中输入对应的函数名和(如果需要的话)文件名;