数据断点

来源:互联网 发布:程序员有转行的吗 编辑:程序博客网 时间:2024/05/18 17:02

前言:

 在一个大的项目里面,对一个良好编程风格的作用感触会很深。

有的时候一些Struct或者Public的Class的数据成员总是让我们感到困惑,因为我们有时候是很难监控到它们是什么时候被改变的,当代码很多很乱的时候,靠“人肉搜索”基本上是无法真正找到改变的代码的,有的时候莫名其妙的就被改掉了,这种行为和可能性都很容易出现的。如果有一组Get和Set的话,可以在这个函数里面设置一个断点就可以知道是什么时候被改变的了。(所以我们在做大数运算的时候会加入一个这两个函数)


这种时候大家可以尝试使用数据断点来处理。下面是使用数据断点的简易教程。


(1)数据断点怎么设置的:

vs中按F11,会进入调试状态;

       

点击新建,建立数据断点,进入



注意啦!!!

数据断点是通过监视内存地址某一段区域更改来实现的,因此你必须提供一个内存地址(或者说就是指针吧),这里num是一个整形变量,因此你需要使用“num”的形式来创建一个数据断点,因为整形的 大小是4个字节,因此数据断点监视的区域是4个字节。 比如说你要看num是在哪个时候变的就要在地址那块写num的地址。


继续程序的执行,如果这是num的只改变了就会弹出一个对话框,告诉你有一个内存地址的内容发生了变化(说明我们的数据断点生效了),这时代码行指向的是数据被修改的下一行代码。


数据断点的执行原理应该是Windows内存管理里面的Guard Pages概念和VirtualProtectEx函数的实现。

大端&小端:


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


0 0
原创粉丝点击