代码测试之代码调试
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
代码测试是我们开发过程中很重要的一步。很多新入行的朋友都会习惯地认为测试只是测试部门的工作,事实上并不是这样。每一位软件工程师对应该本着对自己代码负责的态度,在入库或者进行集成测试之前对自己的代码进行充分的测试。那么掌握代码的调试技巧和编写测试用例就成为我们日常生活中很重要的一个部分。本文就针对代码调试问题进行分析和解决。
调试工具: VisualStudio 6.0
(1)有的执行文件能够进行源码级调试,而某些文件却只能指令级调试?
答: 这主要取决于我们在编译文件的时候有没有生成调试信息。在vc上面,如果你选择了debug版本,那么就会在debug目录下面生成*.pdb文件;相反,如果此时你选择了release版本,那么很抱歉你就不能进行源码级调试。单击【Build】菜单, 选择【Batch Build】,你就会看到弹出一个对话框,你可以选择生成的执行文件属于debug版本还是release版本了。
(2)常见的调试方法有哪些?
答: 常见的调试流程是这样的:
a)右击鼠标,创建一个文本文件,修改为process.c。输入需要调试的代码。
b)右击鼠标,用VisualStudio 6.0打开。按下【ctrl + F7】,提示是否创建一个工程,单击【确认】,编译器编译process.c文件。按下【F7】,link程序连接process.o文件和lib库,生成exe文件。
c)单击【F10】,process.exe处于调试状态,你会看到一个黄色的箭头停在main函数的起始位置,这样我们的调试过程就开始了。
d)通常调试的操作有下面几种:
F10 单步调试,如果遇到的是函数语句,跳过
F11 单步调试,如果遇到的是函数语句,进入函数
shift +F11 执行到函数的结束位置
shift + F5 结束调试状态
F5 文件继续运行,直到遇到第一个断点
ctrl + shift + F5, 结束当前的调试状态,重新调试文件
alt + 3, 打开Watch窗口,你可以输入你希望跟踪的全局变量或者是临时变量,甚至是寄存器,表达式等,这样可以相应的数值
alt + 7, 堆栈回溯
alt + 6, 内存空间查询,你可以查看制定地址的数值
alt + 4, 查看当前运行函数内部变量的一些数值
alt + 5, 查看cpu寄存器的数值,通常注意的数值有eax,ebp,esp,EIP等
alt + 8, 当前的源码状态会变成code和disassemble混编的状态,方便你对语句的精确了解
(3) 如何实现代码的精确调试
答: 你可以按照如下步骤操作:
a) 【alt + F9】 打开breakpoints窗口,选择Data
b)单击一个带有右三角形的按钮,弹出Advanced Breakpoint,输入函数名称
c) 在expression中输入你希望程序接受调试的条件,比如可以是下面的条件判断
num == 2 判断 num 是否等于2
*(long*)0x5000 判断制定内存的数值是否发生异动
(4) vc可以调试多线程吗?
答: 可以。
a)首先单击【F10】,开启文件的调试状态
b)单击【Debug】菜单,选择【thread】子菜单
c) 在这里,你可以看到当前所有创建的线程,如果你需要对某一个线程进行调试,那么先把你需要调试的线程设置为Set Focus状态,另外一个thread设置为suspend状态,与此同时resume你需要调试的thread即可。
(5)怎么利用vc测试代码覆盖率,函数覆盖率等?
答案: 首先,你需要删除当前已经生成的Debug下面所有的文件;
然后单击【Project】->【setting】, 选择【link】,在【Enable profiling】在前面打钩
接着编译、连接生成exe执行文件
最后单击【build】->【Profile】, 弹出【profile】窗口, 选择你需要测试的选项,单击【OK】,程序就会自动运行。同时运行的结果会在Output窗口打印出来。