VS调试技巧学习

一、断点调试

示例以VS2008为例

// testVSDebug.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

unsigned int GetMin(unsigned int nParam1, unsigned int nParam2)
{
	//这里默认输入的2个参数不等
	if (nParam1 < nParam2)
	{
		return nParam1;
	}
	
	return nParam2;

}

int _tmain(int argc, _TCHAR* argv[])
{
	unsigned int nParam1 = 12;
	unsigned int nParam2 = 20;
	unsigned int nRet = GetMin(nParam1, nParam2);

	printf("获取到的最小值为 %d\n", nRet);
	
	system("pause");
	return 0;
}


1、单点调试

1)可以将鼠标移动到想要下断点的行,按下F9,如果按下F9出现
F9错误
可以看看是不是安装了有相同快捷键或者卸载了软件没有重启系统,重启一下就可以了。

2)将鼠标移动到想要下断点的行的左侧空白位置,按下鼠标左键
设置断点

2、调试

以上述示例为例,可以按下键盘的F5快捷键,或者菜单栏——调试——启动调试,如下
启动调试
这样就进入调试状态了,如下图,运行到断点处了
断点

最终结果是:
结果

相关调试快捷键
含义快捷键
跳转到下一个断点处F5
停止调试Shift+F5
逐语句F11
逐过程F10
跳出Shift+F11
切换断点F9
删除所有断点Ctrl+Shift+F9

3、断点管理

Alt + F9,或者菜单栏——调试——窗口——断点,如下:
断点列表
由图:
1)命中次数中,如果显示"(当前为1)"说明程序运行到当前断点
在这里插入图片描述
2)把项红点签名的√去掉的话,对应行的断点就去掉了,程序F5继续运行的话就不会在改位置停止
在这里插入图片描述

4、条件变量

我们通常会遇到这种情况:在循环中调试的时候,想让值为约定值时触发调试。如果循环次数多的话,我们F5也是效率很低的,那有没有什么方法可以直接让程序判断值为约定值就停止的方法呢?还真有,如下步骤:
1)在循环体内设置一个断点(最好是第一行)
在这里插入图片描述

2)到断点列表(vs菜单栏——debug——windows——breakpoints),在弹出的窗口中找到要设置条件的断点,右键断点选择condition,设置条件,如下:当i9960时触发断点
在这里插入图片描述
确定之后,如下:
在这里插入图片描述
启动程序,这个时候只有等i
9960时程序才会进入断点。如果条件变量需要设置字符串的值,建议直接修改代码的方式会简单一点.

5、悬停鼠标查看表达式的值

直接将鼠标放在要显示的变量上即可。
也可以通过watch窗口查看变量的值

6、在运行中修改值

基于5,如下:原本是i==0的,修改为i=1
在这里插入图片描述

7、回退测试

在测试中会存在这样的场景:直接F10发现一个函数的返回值和预期的不符合,这个时候重新启动测试?不不不,还有更好的方法,我们可以将换色的箭头直接拖到想要重新调试的位置,基于6中i=1的场景,想测试i=0的场景
在这里插入图片描述

8、编辑接着继续运行

在大型的项目中,调试往往是很复杂的,因此在发现一个问题的情况下,最好是直接修改代码并继续运行检查是否有问题。这时候VS会提示代码被修改,默认执行即可。

9、查看堆栈信息

vs菜单栏——debug——windows——call stack\threads
这样就可以查看存在匹配pdb的程序的调用栈流程\线程信息

10、内存窗口

vs菜单栏——debug——windows——memory——选择一个内存窗口即可,在弹出窗口中输入地址,就可以显示对应地址内存的值

11、伪变量

https://docs.microsoft.com/zh-cn/visualstudio/debugger/pseudovariables?view=vs-2019

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值