首页
社区
课程
招聘
[原创]使用Windbg在XP下Heap追踪失败的原因
发表于: 2015-9-13 10:17 8987

[原创]使用Windbg在XP下Heap追踪失败的原因

2015-9-13 10:17
8987

说明:本帖在看雪论坛和个人博客同步发布(http://blog.csdn.net/gufeng99/article/details/48412753),由于CSDN的博客发布越来越让人失望了,打算回归看雪论坛。

     最近同事的代码中碰到一个bug会导致奔溃的bug,从dump上看是由于某个对象的堆内存指针被释放了,但代码仍调用了该对象指针的虚函数,从而引起内存访问违法崩溃,由于该类被大量使用,无法直接定位到具体哪个类被提前释放了,从而打算开启堆页检查,跟踪该对象堆内存指针被释放的代码位置,从而揪出元凶。

     由于此bug在win7的机器上不易重现,在xp sp3的机器上较容易重现,故准备在xp sp3的机器上开启堆页检查(DHP),跟踪该对象指针被释放的代码位置和时机,由于未从用过gflag进行堆页检查和调试,故先写了段小代码练练手:


用gflag开启堆页检查:


    设好符号文件后祭出 Windbg 走起,崩溃触发后断下,输入 !heap -p -a ecx 指令一举揪出元凶,但现实却是如此的骨感:

004010d9 8b11            mov     edx,dword ptr [ecx]  ds:0023:0161cff0=????????

0:000> !heap -p -a ecx

ReadMemory error for address eeddccee

Use `!address eeddccee' to check validity of the address.

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 3
支持
分享
最新回复 (9)
雪    币: 6
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
谢谢楼主分享。
2015-9-13 11:40
0
雪    币: 8201
活跃值: (2701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不会调试的路过
2015-9-13 14:42
0
雪    币: 47147
活跃值: (20420)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
等以后有条件,看雪也为你搞个博客,把你的精华帖展现在上面。
2015-9-14 10:48
0
雪    币: 135
活跃值: (63)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
这个页堆有点怪,各种不明真相的问题。前几个月用的时候,我就成功过一次,郁闷。
2015-9-14 11:29
0
雪    币: 659
活跃值: (499)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
6
多谢老大关注
2015-9-14 12:24
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
7
果断坑死人 不偿命啊 哈哈
2015-9-14 19:55
0
雪    币: 3366
活跃值: (1338)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
8
学习了 精彩
2015-9-24 19:13
0
雪    币: 185
活跃值: (86)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
xp 已经出了support lifecycle, https://support.microsoft.com/en-us/lifecycle/search?sort=PN&alpha=Microsoft%20Windows%20XP&Filter=FilterNO. 新版本的windbg应该不会测试xp, 如果你的
新版本windbg帮助上声明支持xp, 你应该能file一个文档bug.
2015-9-28 19:28
0
雪    币: 799
活跃值: (457)
能力值: ( LV12,RANK:280 )
在线值:
发帖
回帖
粉丝
10
很详细,感谢楼主的分享
2016-7-25 17:08
0
游客
登录 | 注册 方可回帖
返回
//