入门技--调试
1.链接错误:
通常提示在XXX.obj中找不到符号,或者FUNC@XYZ已经在XXX.obj中定义,符号重定义等
数字标注①:本次编译不成功是由6个LINK error引起
数字标注②:error LNK1234,此次错误是由链接错误引起,发生错误的
LNK1234中的1234指的是链接错误号
地方在XXX.cpp(或者XXX.c)所产生的XXX.obj文件中(每个CPP或者C 文件都对应一个同名的obj文件)
数字标注③:出现错误的相关信息,一般情况下信息中包含函数名称,可以找到对应文件的对应函数调用处查看具体原因
找不到符号的一般原因是没有包含对应的lib文件.在默认工程中,VS一般会包括一些必须的和常用的lib文件,此类错误一般不会发生,一般发生在自己写的代码中.若发生此类错误,则首先应检查自己的代码是否包含了调用函数对应的头文件,头文件相应的CPP文件是否有具体的函数代码
解决了编译链接期间的错误,正式进入源码调试阶段
首先,介绍几个名词:
断点(Break Point):期望在某个时刻,程序可以在执行某条语句之前停下来,此时某条语句就是期望中断的地方,即断点,在VS在本条语句上按F9,可快速下断点
条件断点(Condition Break Point):在代码执行之前,期望在变量的值为特定值,或者某个表达式满足一定条件时中断.在VS中先下断点,然后鼠标移动到代码编辑器左边的红色圆点上,编辑条件
函数断点(Function Break Point): 在任意位置执行到指定函数时中断.
VS中快捷键是按Ctrl+B
单步(Single Step):在代码中断下来以后,逐条代码逐条代码的执行.
步入(Step Into):遇到函数调用的时候,执行到函数里边.
VS中快捷键是F11
步过(Step Over):遇到函数调用的时候,自动执行完函数代码,然后中断在函数的下一行代码上.VS中快捷键是F10
步出(Step Out):在函数中单步调试时想跳出该函数,直接执行到该函数返回.
VS中快捷键是Shift+F11
调试符号(Debug Symbol):自己的程序或者系统库文件或者第三方库文件中有关函数(参数,返回值),公开的一些结构体信息等等一系列包含具体信息方便调试的信息,保存这些信息的文件通常为 可执行文件名.pdb (program database)
接下来我们就以实例来演示一下上边的几个名词到底是什么意思
代码如下:
其中由于要在一屏的截图中放下代码,所以很多地方都写成一行了,在实际的编码中不要这么写,不要给自己挖坑.
总共有三个函数,main,test,func
一个全局数组arr