VS 条件断点学习总结2
1 设置条件断点
右击断点–编辑窗口左侧的红点,在上下文菜单上选择“Condition…”。
这时弹出一个对话框供你设置激活该断点所需的条件。比如:我们希望只有当局部变量paginatedDinners的尺寸小于10时,调试才中断。我们可以写出对应的表达式。
现在我再运行这个程序,实现搜索,只有返回值小于10时,程序运行才会被中断。对于大于10的值,该断点将被跳过。
记录到达断点次数
有时你希望,只有当第N次满足条件的运行到达断点时,才中断程序运行。例如:当第五次返回少于10的查询结果时,中断程序运行。
可以通过右击断点,然后在弹出菜单上选择“Hit count…”菜单命令实现。
这时系统弹出一个对话框,它允许你指定:(1)当满足条件,而且进入断点的累计次数等于N时,断点命中一次。(2)当满足条件,而且进入断点的累计次数是N的倍数时,断点命中一次。(3)当满足条件,而且进入断点的累计次数大于N时,每次命中断点。
2 VS 2010使用条件断点进行调试
以调试C++控制台代码为例子,介绍条件断点。
条件断点是在满足条件时,才会断下来的。
方法/步骤
1
启动VS 2010,新建C++控制台工程。
2
以C++代码为例,写了一个求和的C++控制台程序,
输出的是1~9的和。
3
先用普通断点。在12行的左侧空白点击一下就可以插入一个断点了。
在调试的时候可以看到每次代码经过这里时都会断下来。
4
如果想看一下i=5时,res的值怎么办呢?虽然普通断点也能达到,但麻烦了。
5
在断点处,右键,选择“Condition...”进行设置条件。
6
输入条件为i == 5。
默认是选择"Is true",表示当条件为true是断下来。
"Has changed",则如果本次的条件值和最近一次的条件值不同时,才断下来。
7
按F5进行调试,可以看到i == 5的时候,触发了断点。
3 VS条件断点的一个坑
今天早上要调试一个方法,所以在方法的入口处也就是’{’打了一个条件断点,可是随后就发现对这个方法的调用都无法获得正确的结果了,不管传递什么参数,方法的返回值都一样,而且这个返回值与输入的参数完全无关,这个问题折腾了我一早上,差点把我搞崩溃,而且诡异的是,这个问题只有在调试程序的时候才会出现,如果不调试直接运行的话,就是完全正常的。
在抓耳挠腮了一早上之后,用尽了各种办法找不到原因,偶然把条件断点点开,终于发现了问题,原来我把'”==”不小心打成了”=”,如果在代码中出现这种问题的话,代码肯定会编译失败的,可是在条件断点里并不会进行类似的检查,并且由于写成了赋值=,还把方法参数给改了。
4 VS打字符串条件断点的方法 及 查看CStringArray的方法
条件设置为strcmp(fuzzCharRes, "RtlEnterCriticalSection") == 0
Visual Studio中的添加断点功能中支持的字符串函数有:strlen, wcslen, strnlen, wcsnlen, strcmp, wcscmp, _stricmp, _wcsicmp, strncmp, wcsncmp, _strnicmp, _wcsnicmp, strchr, wcschr, strstr, wcsstr.
查看CStringArray的方法
exportedFunctions.m_pData,7056 逗号后面加这个数组的长度
std::string stdStr = "12";
设置条件断点strcmp(stdStr._Bx._Buf, "12") == 0
{_Buf=0x0000000000b54c90 "貐㺦" _Ptr=0x000000003ea68c90 "F" _Alias=0x0000000000b54c90 "Œ¦>" }
_Buf: 0x0000000000b54c90 "貐㺦"
_Ptr: 0x000000003ea68c90 "F"
_Alias: 0x0000000000b54c90 "Œ¦>"
CString 设置条件断点 wcscmp(strObjAddr.m_pszData, L"66") == 0
wcscmp(rcx, L"MOV RCX, 2 Current CallLevel: 1 \n") == 0 带寄存器的版本,配合OutputDebugStringW断点
访问指针成员的变量 在Intermidate窗口或字符串断点中
{,,NsDataModel10.dll}(*(Ns::Member*){*}pVisitable).m_id
VS 条件断点学习总结2相关推荐
- VS条件断点学习总结
HOW TO:在 Visual Studio .NET 中设置条件断点 本任务的内容 摘要 创建示例代码 创建无条件断点 创建条件函数断点 创建附加断点 更改断点属性 在调试模式下逐步调试代码 更改断 ...
- android studio 学习入门篇
开发第一应用 可以开发属于自己的应用,是否有点小激动?好吧!让我们开始,首先点击Start a new Android Studio Project创建工程: 接下来需要输入应用名称(第一个字母要大写 ...
- 信息安全系统设计基础第3周学习总结
体会:学习过程中,很多知识是陌生的,通过搜索,知识越来越多,心生恐惧,但是面对问题,要一个个学习,认真看,硬着头皮看,在苦逼中寻找乐趣. 遇到的问题及解决: 1.在linux下编译c语言出错: 文件里 ...
- 游戏数据的捕捉(郁金香学习笔记)
目录: 1.得到角色对象属性 2.得到吃药的CALL 3.得到快捷键CALL 4.得到选中怪物的ID地址 5.得到怪物列表 6.得到怪物属性 7.得到显示血条CALL 8.得到普通攻击CALL 9.得 ...
- IDEA小技巧:Debug条件断点
今天DD给大家分享一个IDEA调试过程中的一个小技巧. 先来说说场景,你有没有碰到类似的情况,一个循环结构里,中间某一个情况可能会出错.比如下面的代码结果中,可能执行到第27次的时候,会出现问题. f ...
- 2017-2018-2 20155327 《信息安全系统设计基础》第2周学习总结
2017-2018-2 20155327 <信息安全系统设计基础>第2周学习总结 1-vi . 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号 用Vi输入图中代码,并用gcc ...
- 2018-2019-1 20165337 《信息安全系统设计基础》第一周学习总结
测试一 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号 用Vi输入图中代码,并用gcc编译通过 在Vi中使用K查找printf的帮助文档 提交vi编辑过程截图,要全屏,包含自己的学号信息 ...
- windbg 脚本学习总结
windbg 脚本简单入门 http://blog.csdn.net/superliuxing/article/details/19206985 Windbg的功能自然不必说,集内核调试,应用程序调试 ...
- VC++调试技巧学习总结
VC6.0调试方法 有时候,我们编写好一个程序后,希望通过调试来知道变量值的变化情况,下面我和大家分享一下怎么利用VC6.0来查看变量值变化情况. 工具/原料 VC6.0软件.待测试程序 方法/步骤 ...
最新文章
- 简述sqlite数据库的特点_SQLite
- ActiveMQ点对点消息通信demo
- 数学知识在游戏中的运用
- ASP.NET Core MVC I\/O编程模型
- C语言 | 读写文件
- 亮点抢先看 | 旷视科技11篇 ICCV 2019 论文概览
- 三维视觉基础之世界坐标系、相机坐标系、图像坐标系和像素坐标系之间的转换关系
- Spring.Net学习笔记十(打造简易的依赖注入框架)
- SpringBoot整合shiro框架(张开涛跟我学shiro-综合实例-代码新版)
- MySQL数据库之分库分表方案
- 2022年4月加拿大MogaFX外汇和衍生品市场活动三年期央行调查
- 腾讯微云和坚果云哪个好用?
- 【CSS练习】IT修真院--练习6-护工列表界面
- FastQC的安装与使用
- Vuetify——使用icon图标
- 【Redis缓存中间件必须要掌握的面试知识】
- 给定经纬度计算距离_根据经纬度计算两地间的距离
- English - every和each的用法和区别
- 事业单位和公务员的面试方式有什么区别?
- [工具]更新音乐下载网站,MP3音乐无损音乐下载器
热门文章
- 欧蓝德 (660) -(警车内被乔丹体育)_几款豪华SUV的油耗与空间的巅峰对决!欧蓝德还是奇骏...
- lua require dofile loadfile区别
- Linux服务器oracle数据库重启服务、重启监听方法,oracle数据库sysdba管理员登录方法
- windows 技巧篇-查看文件夹被那个进程占用,文件夹占用解除方法
- 数字电路技术基础(四)
- CTFshow 命令执行 web30
- Conan and Agasa play a Card Game codeforce
- 第3周实践项目5 -顺序表的应用 拆分单链表
- Simulink仿真 第四节 总线及示波器模块
- Reverse Linked List