windbg调试内存泄漏
来源:互联网 发布:mysql 内存多大合适 编辑:程序博客网 时间:2024/06/05 17:39
原文地址:http://www.cnblogs.com/SkyMouse/archive/2012/07/05/2578553.html
windbg调试内存泄漏
首先使用windbg工具gflags.exe设置内存启动跟踪内存泄露进程的user stack
启动方法就是运行下面指令gflags.exe /i test.exe +ust
等价于HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options,命令“gflags.exe /i test.exe +ust”实际上就是在该路径下创建一个子键“test.exe”并创建一个名为GlobalFlag内容为0x00001000的REG_DWORD值。
使用windbg加载test.exe,运行关闭时windbg中会提示内存泄露
normal block at 0x026A5F98, 4000 bytes
long
.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.
可以发现地址0x026A5F98就是内存泄漏的地址泄漏4000个字节
通过!heap命令对该地址进行分析可以发现具体的调用堆栈
0:000> !heap -p -a 0x026A5F98
address 026a5f98 found in
_HEAP @ 14f0000
HEAP_ENTRY Size Prev Flags UserPtr UserSize - state
026a5f60 01fc 0000 [00] 026a5f78 00fc4 - (busy)
77a1b234 ntdll!RtlAllocateHeap+0x00000274
584d7743 MSVCR100D!_heap_alloc_base+0x00000053
584e5d8c MSVCR100D!_heap_alloc_dbg_impl+0x000001fc
584e5b2f MSVCR100D!_nh_malloc_dbg_impl+0x0000001f
584e5adc MSVCR100D!_nh_malloc_dbg+0x0000002c
584e5a91 MSVCR100D!_malloc_dbg+0x00000021
58694dd6 mfc100ud!operator
new
+0x00000026
58694e6a mfc100ud!operator
new
[]+0x0000001a
58694768 mfc100ud!operator
new
[]+0x00000018
*** WARNING: Unable to verify checksum
for
SendMsgEx.exe
2a3c25 SendMsgEx!CSendMsgExDlg::Thread1Proc+0x00000055
767c1174 kernel32!BaseThreadInitThunk+0x0000000e
779fb3f5 ntdll!__RtlUserThreadStart+0x00000070
779fb3c8 ntdll!_RtlUserThreadStart+0x0000001b
可以发现内存泄漏的地址在CSendMsgExDlg::Thread1Proc这个地址里面调用了new[]导致内存泄漏
DWORD
WINAPI CSendMsgExDlg::Thread1Proc(__in
LPVOID
lpParameter)
{
INT
*pVal =
new
INT
[1000];
//..................
}
如此即可发现导致内存泄漏的原因和地址!
0 0
- Windbg 调试内存泄漏
- windbg调试内存泄漏
- windbg调试内存泄漏
- windbg调试句柄泄漏
- Windbg 分析内存泄漏
- Windbg 查内存泄漏
- 借助 windbg 调试 句柄泄漏
- Windbg调试windows handle泄漏
- 借助 windbg 调试 句柄泄漏
- 借助 windbg 调试 句柄泄漏
- 使用WINDBG检测内存泄漏
- 使用WINDBG检测内存泄漏
- 使用windbg检测内存泄漏
- 内存泄漏调试方法
- Android 内存泄漏调试
- vc内存泄漏调试
- Android 内存泄漏调试
- Android 内存泄漏调试
- 几个收藏
- Python 执行时后面加参数 在程序中获得
- Xcode的iOS项目的版本号设置
- Implement Automatic Discovery in Your Java Code with Annotations
- UVA - 10599Robots(II)(LIS)
- windbg调试内存泄漏
- DB2数据库常用命令数据库学习
- 游戏行业创业分析
- web与winform中路径的获取
- Redis启动
- 利用网盘构建svn代码仓库
- 确保隐私安全就用狙击豹加密软件
- java 直观的位移运算例子
- HTML代码转化成字符串