中级会员
- 积分
- 449
- 金钱
- 449
- 注册时间
- 2017-3-31
- 在线时间
- 118 小时
|
楼主 |
发表于 2017-7-11 09:26:13
|
显示全部楼层
本来就不是特别高明的解决办法,只是比一个一个核对轻松一些而已。
标题说的很明白,是要查看某个固定的内存是哪一个变量在用。你可能觉得程序运行期间,临时变量并不会固定一个地址,所以没法查看。可是请注意我说的是堆内存,没有程序员操作不会自动释放。其次堆内存里会在需要分配的内存前加 内存控制块mcb结构体,用来标识分配的内存块的大小以及是否使用,我主要监视的就是这个结构体。我的程序全部使用内部值,每次程序从相同的地方开始,用相同的数据开始运行,所以变量每一次都会分配在相同的地址上,这个内存控制块结构体每次也在相同的内存地址上。我在第一次调试中,确定某一内存内存控制块mcb结构体(假设为A)大概被改写的位置,就是大概是运行哪个或者哪几个函数的时候被改写了。然后我重新启动调试,运行到第一次调试判断的这个大概的位置,此时A地址还没有被利用,然后我用Access Breakpoint,当程序向A中写入数据的时候,程序断点。也就是说,我下一次断点时正在执行的语句就是向A中写入数据的语句,也就是正在执行语句中涉及到的变量在使用A标识的一块内存。
我这样说,可能你还是不知道我在干嘛,实在不理解的话就忽略我这个帖子吧,把你带沟里不是我的本意。K.O.Carnivist 理解我的意思,我发的是求助帖不是分享帖,我的问题已经解决,谢谢你的关注 |
|