2016 - 2024

感恩一路有你

设置断点的命令 切换断点是什么意思?怎么应用?

浏览量:1770 时间:2023-04-11 13:08:58 作者:采采

切换断点是什么意思?怎么应用?

断点通常安排在程序代码中能够反映程序执行状态的部分。

打开“代码编辑器”窗口,将光标指向要作为断点的代码行,然后使用“调试”菜单中的“切换断点”命令。设置为断点的代码行将被加粗并突出显示。

中断隐指令由哪个硬件执行?

中断隐式指令由CPU执行。

中断隐式指令是指CPU响应一个中断,经过一些操作后,再执行中断服务程序的操作。

中断隐式指令在指令系统中不是真正的指令,它没有操作码,所以中断隐式指令是一种不被允许的,用户不能使用的特殊指令。其完成的业务主要包括:

(1)保存断点

为了保证中断服务程序执行后能正确返回原程序,必须保存原程序的断点(即程序计数器(PC)的内容)。断点可以被推入堆栈或存储在主内存的特定单元中。

(2)暂时不允许中断

暂时不允许中断。在中断服务程序中,为了保护中断场景(即CPU主寄存器的内容)不被新的中断中断,需要关闭中断,以保证中断服务程序执行后被中断的程序能够正确执行。

在中断隐藏指令中并不是全部由硬件自动关闭,有一部分是由软件(中断服务程序)实现的。中断服务程序通常用于保存通用寄存器和状态寄存器的内容。

(3)导出中断服务程序

导出中断服务程序的实质是取出中断服务程序的入口地址,并发送给程序计数器(PC)。对于矢量中断和非矢量中断,中断服务程序的方法是不同的。

断点类型有哪些?

断点的类型

抄送断点

也叫int3/F2断点,软件执行int3指令时程序会暂停,int3指令的机器码是CC。设置CC断点后,原位置的机器码会被调试器修改为0xCC(并备份原数据),程序执行到0xCC时程序会被挂起(调试器做的事情)。

所以也就是说,如果我们的程序中有0xCC没有调试器,程序就不会暂停。

优点:可以设置无数。

缺点:容易被察觉。

内存断点

分为:

(1)内存执行断点

机器码作为程序执行的时候是破的。

(2)内存写断点

重写这部分机器码的时候坏了。

(3)内存访问断点

访问执行|写入。

设置内存断点后,调试器将向断点所在的内存页添加PAGE_NOACCESS属性。该属性将设置当前内存页面,禁止任何形式的访问。如果你访问它,就会触发一个内存访问异常,然后调试器会捕捉这个异常,判断这个异常触发的位置和你的断点。无论位置是否相同,接管异常并暂停程序,否则,释放程序。

优点:与CC断点相比,不容易被检测到。

缺点:只能设置一个(新设置的内存断点会覆盖原有的内存断点),调试器中没有相应的记录窗口,程序重装后会消失。

硬件断点

在寄存器中,有一些寄存器,用于调试。人们称之为调试寄存器,有DR0到DR7八个名字。

Dr0-Dr3存储中断的地址,Dr4和Dr5一般不使用(保留),Dr6和Dr7记录Dr0-Dr3中中断地址的属性。

硬件断点最不容易被打破,可以分为三种类型:

(1)硬件执行断点。

(2)硬件写断点。

(3)硬件访问断点。

当硬件断点生效时,他会先执行合格代码,执行完后再停止,而内存断点和CC断点会在合格代码即将执行时被打破。

优点:更难检测,程序重装后不消失。

缺点:只能设置有限的数量。

条件断点

只有满足设定条件时才会触发的断点(自己设置的逻辑表达式)。

条件记录断点

条件记录断点不仅具有条件断点的功能,还可以记录断点处函数表达式或参数的值,还可以设置通过断点的次数。每当满足暂停条件时,计数器就减1。

您可以有条件地在重复调用的函数段的开头记录断点。过滤每个调用中传递的参数,并在适当的时候断开连接。

消息断点

消息断点是条件记录断点的应用,是为一个特殊函数:winproc函数的消息参数设置的记录断点。

Windows是一个基于消息的操作系统。每个消息都以相同的格式写入一个结构中。这种结构叫做MSG。消息出现后,windows将该结构传递给WinProc函数,并使用它来执行消息处理功能。

您可以在W窗口中为程序表单消息设置消息断点。

断点 程序 内存 服务程序

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。