为什么调试堆。当堆附加数据被破坏的时候(一般是对堆地址做增量操作导致的越界)程序会崩溃并弹出错误报告框。
- 首先,通过错误弹窗我们可以得到堆的编号以及堆所在位置等信息。
- 此时,我们点击重试按钮,此时代码定位到出问题的地方,可以在堆栈窗口中查看定位到的出问题的模块。
- 通过调用堆栈窗口,我们可以定位到自己写代码相关的函数,或则是代码段。
数据修改断点:监控某地址上的内容变化
- 将问题堆弹窗地址记录下来,堆该数据添加断点,监控是否有修改,当地址数据没修改的时候,就会自动下断点,把程序暂停下来。
- 找到出问题的代码断点后,定位出问题的代码。
- 下断点,清除数据监测断点,重新调试,查看数据改变情况。
PS: VS2013添加数据修改断点,单步F10 调试->新建断点->地址->监控几个字节。堆地址可能会变动,需要关闭随机地址。