0、概述
总共有如下几种断点类型:
普通的位置断点:在程序的固定位置产生断点;
函数断点:在函数定义的第一行产生断点,优点是可以不用打开源代码即可设置断点,并可以用来找main函数;
数据断点:有时候需要弄清楚哪段代码改变了变量,即可使用此断点,当变量值发生改变时,产生此断点;
条件断点--根据命中次数:在一个循环中,可能需要在特定的循环次数中产生中断;
条件断点—根据具体条件:可以用任何变量来定义特定的条件满足时,产生断点,实际上也包括了“根据命中次数”;
断点的进阶应用:
当产生断点时,执行一段代码;
针对特定线程进行调试;
1、各种断点
#include <iostream>
using namespace::std;
int main()
{
int i =0;
int j;
for( i = 0; i < 1000; i++ )
{
cout << "i is "<<i<<endl;
if( i == 650 )
j = 100;
}
}
1.1普通断点
在特定行按F9,则产生断点,只要程序有运行到此行,则产生断点
1.2函数断点
“工具”->”自定义”->”命令”->”调试”->”在函数处中断”
将”在函数处中断”拖到工具栏,然后点击,输入”main”进行测试。
1.3数据断点
“工具”->”自定义”->”命令”->”调试”->”新建数据断点”
首先将”新建数据断点”拖到工具栏,然后在数据变量所在函数入口处,设置普通断点,然后按F5,程序停留在函数入口处,则”新建数据断点”使能,点击”新建数据断点”,输入&j,再按F5,则下个断点发生在i==650时,此时j发生改变。
1.4条件断点--根据命中次数
先在循环内部的特定行插入普通断点,然后在右键此行,选择”断点””命中次数”,则当循环特定次数时,发生中断
1.5条件断点—根据具体条件
先在循环内部的特定行插入普通断点,然后在右键此行,选择”断点””条件”,则当在循环中,此条件满足时发生中断
2、进阶应用
2.1当断点发生时,继续运行,并执行特定操作
先设置上述任意一种断点。然后在断点行,点击右键->”断点”->”命中条件”
可以打印一段消息:这点对应socket编程,可能发生超时的API来说,当断点发生时,不能够中断程序,而是需要让程序继续跑下去;
可以运行宏:可以运行段宏来改变程序中的变量;
可以继续运行:勾选;
2.2限定在特定线程中使用断点
先设置上述任意一种断点,然后在断点行,点击右键->”断点”->”筛选器”
参考资料:
Visual Studio调试之断点基础篇[http://www.cnblogs.com/killmyday/archive/2009/09/26/1574311.html]
Visual Studio调试之断点技巧篇[http://blog.csdn.net/Donjuan/article/details/4618717]
Visual Studio调试之断点进阶篇[http://blog.csdn.net/Donjuan/article/details/4600546]
理解First Chance和Second Chance避免单步调试[http://blog.csdn.net/Donjuan/article/details/3859160]
分享到:
相关推荐
在实际调试过程中,合理选择和使用这三种断点类型能够提高调试效率。软件断点简单易用,但可能会因为代码变动而失效;硬件断点稳定可靠,但资源有限;内存断点则适用于监控特定内存活动。了解这些断点的工作原理和...
- 定义一个结构体来存储硬件断点信息,包括内存地址、断点类型(读、写、执行)等。 - 提供一个函数来设置硬件断点,它会使用底层API向操作系统注册断点,并保存断点信息。 - 提供一个函数来删除硬件断点,清除之前...
在计算机系统中,硬件断点是由CPU硬件直接支持的断点类型,它允许我们指定内存地址,一旦程序尝试读写该地址,CPU就会触发中断,从而暂停程序执行,进入调试模式。与软件断点相比,硬件断点不涉及指令的修改,因此更...
写时断点是一种特殊的断点类型,当内存地址的数据发生变化时,程序会暂停。在Ollydbg中,可以使用`BDW`(Break on Write)命令来设置。 4. **访问断点**: 访问断点包括读取和写入断点,分别在尝试读取或写入内存...
**高级条件断点**是一种可以设置复杂条件的断点类型,它允许用户定义一个表达式或一系列逻辑条件。当程序执行到该断点处时,会先判断这些条件是否满足。如果满足,则触发断点;如果不满足,则继续执行程序。这种方式...
本文将详细介绍几种常见的断点类型及其设置方法。 #### 一、断点概述 断点大致可以分为两大类:简单断点和复杂断点。简单断点通常指的是在程序的某一特定行上设置的断点,这类断点易于理解和使用;而复杂断点则...
API断点是一种非常实用的断点类型,它可以帮助我们在调用特定API函数时暂停执行流程,从而方便我们观察该API调用前后程序状态的变化。 ##### 1. 使用搜索功能定位API地址 - **操作步骤**: - 在Ollydbg中选择...
本文将围绕OD(OllyDbg)中常用的断点类型及其应用场景进行详细阐述。 #### 二、拦截窗口相关的断点 ##### 1. `bp CreateWindow` - **功能**: 当创建窗口时触发。 - **应用场景**: 想要在程序启动时拦截窗口创建...
在逆向工程领域,尤其是使用OllieDBG(简称OD)进行调试时,理解和掌握不同的断点类型至关重要。本文将深入探讨OD中各种断点的工作原理及其应用场景,帮助读者更好地利用这些工具进行高效的调试工作。 #### 二、...
2. **断点类型**:OD支持硬件断点和软件断点。硬件断点直接监控内存地址,一旦该地址被修改,程序就会暂停。软件断点则是在执行到特定指令时暂停,通过替换指令字节实现。 3. **断点管理**:在OD中,用户可以查看、...
除了基本的行断点之外,Eclipse 还支持更高级的断点类型: 1. **Field Breakpoint (Watchpoint)**:当特定字段被访问或修改时触发断点。 2. **Method Breakpoint**:当特定方法被调用或返回时触发断点。 3. **...
断点类型有: 1. 行断点(Line Breakpoint):在某一行代码处暂停。 2. 字段断点(Field Breakpoint):在成员变量被读取或修改时暂停。 3. 方法断点(Method Breakpoint):在进入或离开某个方法时暂停。 4. 异常...
本文将详细解析三种主要的断点类型:Int3断点、硬件断点和条件断点,并通过实例演示如何利用这些断点进行高级调试和漏洞分析。 ### Int3断点 Int3断点是最常见的软件断点类型,其指令编码为`CC`。当程序执行到Int3...
##### 断点类型 - **BP**: 设置普通断点。例如 `BP 10010` 表示在地址10010处设置一个断点。 - **BPX**: 在函数调用时设置断点。例如 `BPX CreateFileA` 表示在调用CreateFileA函数时设置断点。 - **BPEAX+10**: ...
- **标准断点**:最基本的断点类型,使程序执行暂停于某一行代码。 - **条件断点**:只有满足特定条件时才触发的断点,适用于复杂逻辑判断场景。 - **硬件断点**:利用硬件支持的断点,通常用于监视特定地址的读写...
本实验将详细介绍两种特殊的断点类型——硬件断点和条件断点,并通过实际操作加深理解。 #### 1.2 实验环境 本次实验将在以下操作系统环境中进行: - **Windows 10** - **Windows XP** 这两个系统虽然版本不同,...
Int3断点是最常用的断点类型之一,在调试过程中非常实用。当程序执行到设置了Int3断点的指令时,会触发一个异常,从而导致程序暂停。这种断点不会改变原有的指令,而是将原指令地址处的指令替换为`int 3`(十六进制...
在CONTEXT结构体中,每个调试寄存器都有对应的标志位(如L0-G3),表示局部断点和全局断点的启用状态,以及用于设定断点类型和长度的位(如RW0-LEN3)。当需要设置硬件断点时,开发者需要填充这个结构体,并使用适当...
本文将详细介绍ARM仿真器中常见的断点类型及其工作原理,并探讨如何充分利用这些断点资源以提高调试效率。 #### 断点类型 断点可以根据其实现原理和应用场景的不同分为两大类:硬件断点和软件断点。 **1. 硬件断点...
消息断点是一种特殊的断点类型,用于在程序处理特定Windows消息时暂停程序执行。这种断点非常有用,尤其是在调试与用户界面相关的代码时。例如,当我们想要观察点击某个按钮后程序内部发生了什么变化时,可以通过...