UMDH 是windows debug tools 下的一款命令行工具,它的全名是User-Mode Dump Heap 这个工具会分析当前进程在堆上分配的内存,并有两种模式
1. 进程分析模式,这个模式会对进程分配的每一块内存做记录,其中包含分配的内存大小;内存分配地址;内存分配时的函数调用堆栈等。
2. 日志分析模式,该模式会比较几个不同的日志,找出内存增长的地方。
参照微软的网站和N多大牛的文章,做下小结:
1. 安装dbg_x86_6.10.3.233.msi。Gflags和UMDH都在其中。
这个环节的问题:最新的版本我在MS网站上竟然找不到,后来查了下,原来被打包在sdk中了,详见
http://blog.csdn.net/zhang957411207/article/details/8165861。没有用新版也不影响使用效果。
2. 配置系统 环境变量设置
_NT_SYMBOL_PATH SRV*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\myapplicationssymbols
使用 UMDH 的最重要的步骤之一是确保您具有正确的符号文件,此路径的第一部分指向 Microsoft 符号服务器和存放符号文件的目录,这里存放目录设置为 c:\symbols (手动创建),路径配置完成后,运行程序,系统的pdb就会自动下载到该文件夹;分号后面的路径是应用程序的PDB(符号文件)路径,编译完程序后,将应用程序pdb拷贝到该目录下。
-----------------------------------------------------------------------------------------------------------------
说明:配置了_NT_SYMBOL_PATH 后,启动vs调试程序,初次启动,速度较慢,原因是vs要去服务器下载相关系统dll的pdb文件。
网速如果不给力,慢的受不了,symbols也可以通过手动下载来解决。
手动下载Symbol的地址:
http://msdn.microsoft.com/en-us/windows/hardware/gg463028.aspx#_System_Requirements
-----------------------------------------------------------------------------------------------------------------3. 启用cmd,切换到 dbg的安装目录下,如 D:\Program Files\Debugging Tools for Windows (x86)
4. 使用PageHeap配置工具,打开进程的栈捕捉标志 命令如下: gflags -i appname.exe(目标进程名称) +ust
5. 进程启动后,运行下UMDH, 命令如下: umdh -p:目标进程 ID -f:log1.txt(第一次输出文件)
目标进程的ID在cmd下使用tasklist可以看到。
让目标进程运行一段时间,观察到有明显的内存增长。
再次运行,获取新的log文件:
umdh -p:目标进程 ID -f:log2.log(第二次输出文件)
6.获取结果 运行: umdh -d -v log1.txt log2.txt > diff.txt ,在diff.txt可以找到明显的内存增长点。
要监测的进程要以debug方式运行,release获取不到比较详细的信息
---------------------------------
微软自带的调试工具windbg很强大,除了调试能力外,工具包里面附带的这个umdh工具,可以用于内存泄露的排查。
umdh.exe有2个工作模式,一个是【记录模式】,一个是【统计模式】
#include
#include
void f4(){
char * array [100];
for (int i = 0; i < 100; i ++){
array[i] = new char [0x1000];
}
for (int i = 0; i < 100; i ++){
if (i%2){
delete [] array[i];
}
}
}
void f3(){
f4();
}
void f2(){
f3();
}
void f1(){
f2();
}
/*
* invoke chain: main->f1->f2->f3->f4()
*/
int main(int argc, char * argv []){
printf("CrtMemState.0\n");
getchar();
f1();
printf("CrtMemState.1\n");
getchar();
return 0;
}
最好是带符号表,如果没,可能看到的都是二进制的地址,不清爽.
cl /Od /W0 /Zi cppmemleak.cpp /link /debug
得到
可执行文件cppmemleak.exe 和符号表cppmemleak.pdb
start cppmemleak.exe
这个时候,cppmemleak打印CrtMemState.0。表示这个时候还没有进行用户的内存操作。
记录一下,
umdh -pn:cppmemleak.exe -f:0.log
回车一下让cppmemleak进入状态1,打印CrtMemState.1
再记录一下:
umdh -pn:cppmemleak.exe -f:1.log
这个时候,可以关闭cppmemleak程序了。开始【统计模式】
umdh -d 0.log 1.log
得到统计结果:
还有50处内存分配没有被释放,总共使用了204800(-d表示十进制打印)字节。
// Debug library initialized ...
DBGHELP: cppmemleak - private symbols & lines
.\cppmemleak.pdb
DBGHELP: ntdll - public symbols
d:\symbolcache\wntdll.pdb\4A252F11C9FF495DBA896EE81DFBE40B2\wntdll.pdb
DBGHELP: kernel32 - public symbols
d:\symbolcache\wkernel32.pdb\139CA12C1AB645F6A7F2DD1A098696692\wkernel32.pdb
DBGHELP: KERNELBASE - public symbols
d:\symbolcache\wkernelbase.pdb\864B511E61824938A1D55F7DD1CEC4101\wkernelbase.pdb
//
// Each log entry has the following syntax:
//
// + BYTES_DELTA (NEW_BYTES - OLD_BYTES) NEW_COUNT allocs BackTrace TRACEID
// + COUNT_DELTA (NEW_COUNT - OLD_COUNT) BackTrace TRACEID allocations
// ... stack trace ...
//
// where:
//
// BYTES_DELTA - increase in bytes between before and after log
// NEW_BYTES - bytes in after log
// OLD_BYTES - bytes in before log
// COUNT_DELTA - increase in allocations between before and after log
// NEW_COUNT - number of allocations in after log
// OLD_COUNT - number of allocations in before log
// TRACEID - decimal index of the stack trace in the trace database
// (can be used to search for allocation instances in the original
// UMDH logs).
//
+ 204800 ( 204800 - 0) 50 allocs BackTrace1
+ 50 ( 50 - 0) BackTrace1 allocations
ntdll!RtlLogStackBackTrace+00000007
ntdll!RtlAllocateHeap+0000023A
cppmemleak!malloc+00000079 (f:\dd\vctools\crt_bld\self_x86\crt\src\malloc.c, 163)
cppmemleak!operator new+0000001F (f:\dd\vctools\crt_bld\self_x86\crt\src\new.cpp, 59)
cppmemleak!f4+00000037 (h:\cppmemleak.cpp, 7)
cppmemleak!f3+00000008 (h:\cppmemleak.cpp, 18)
cppmemleak!f2+00000008 (h:\cppmemleak.cpp, 22)
cppmemleak!f1+00000008 (h:\cppmemleak.cpp, 26)
cppmemleak!main+0000001A (h:\cppmemleak.cpp, 32)
cppmemleak!__tmainCRTStartup+000000FB (f:\dd\vctools\crt_bld\self_x86\crt\src\crt0.c, 266)
kernel32!BaseThreadInitThunk+0000000E
ntdll!__RtlUserThreadStart+00000070
ntdll!_RtlUserThreadStart+0000001B
Total increase == 204800 requested + 800 overhead = 205600
如果有符号表,会自动在{1.当前路径; 2.
_NT_SYMBOL_PATH环境变量}下搜索,加载。
0.log
//
// UMDH: version 6.1.7015.0: Logtime 2013-09-26 13:58 - Machine=HARRYWU-PC - PID=3904
//
// Debug privilege has been enabled.
// OS version 6.1 Service Pack 1
// Umdh OS version 6.1
//
// Preparing to dump heap allocations.
// Only allocations for which the heap manager collected a stack are dumped. Allocations whithout stack are ignored.
// The stack trace for an allocation is dumped as a list of addresses. They will be resolved to function names at compare time.
//
// Connecting to process 3904 ...
// Process 3904 opened handle=52.
// Loaded modules:
// Base Size Module
// 400000 31000 H:\cppmemleak.exe
// 77400000 180000 C:\Windows\SysWOW64\ntdll.dll
// 76850000 110000 C:\Windows\syswow64\kernel32.dll
// 76960000 47000 C:\Windows\syswow64\KERNELBASE.dll
//
// Process modules enumerated.
// Debug library initialized ...
DBGHELP: ntdll - public symbols
d:\symbolcache\wntdll.pdb\4A252F11C9FF495DBA896EE81DFBE40B2\wntdll.pdb
*- - - - - - - - - - Start of data for heap @ 290000 - - - - - - - - - -
REQUESTED bytes + OVERHEAD at ADDRESS by BackTraceID
STACK if not already dumped.
*- - - - - - - - - - Heap 290000 Hogs - - - - - - - - - -
18 bytes + 8 at 2907D0 by BackTrace0
1E14 bytes + C at 2907F0 by BackTrace0
2C50 bytes + 8 at 292610 by BackTrace0
3C bytes + C at 295268 by BackTrace0
30 bytes + 8 at 2952B0 by BackTrace0
78 bytes + 8 at 2952E8 by BackTrace0
78 bytes + 8 at 295368 by BackTrace0
3C bytes + C at 2953E8 by BackTrace0
220 bytes + 8 at 295430 by BackTrace0
42 bytes + E at 295658 by BackTrace0
78 bytes + 8 at 2956A8 by BackTrace0
10 bytes + 8 at 295728 by BackTrace0
46 bytes + A at 295740 by BackTrace0
78 bytes + 8 at 295790 by BackTrace0
10 bytes + 8 at 295810 by BackTrace0
10 bytes + 8 at 295828 by BackTrace0
10 bytes + 8 at 295840 by BackTrace0
64 bytes + C at 295858 by BackTrace0
200 bytes + 8 at 2958C8 by BackTrace0
200 bytes + 8 at 295AD0 by BackTrace0
24 bytes + C at 295CD8 by BackTrace0
30 bytes + 8 at 295D08 by BackTrace0
20 bytes + 8 at 295D40 by BackTrace0
20 bytes + 8 at 295D68 by BackTrace0
30 bytes + 8 at 295D90 by BackTrace0
20 bytes + 8 at 295DC8 by BackTrace0
20 bytes + 8 at 295DF0 by BackTrace0
10 bytes + 8 at 295E18 by BackTrace0
20 bytes + 8 at 295E30 by BackTrace0
20 bytes + 8 at 295E58 by BackTrace0
20 bytes + 8 at 295E80 by BackTrace0
20 bytes + 8 at 295EA8 by BackTrace0
20 bytes + 8 at 295ED0 by BackTrace0
20 bytes + 8 at 295EF8 by BackTrace0
20 bytes + 8 at 295F20 by BackTrace0
20 bytes + 8 at 295F48 by BackTrace0
20 bytes + 8 at 295F70 by BackTrace0
20 bytes + 8 at 295F98 by BackTrace0
20 bytes + 8 at 295FC0 by BackTrace0
20 bytes + 8 at 295FE8 by BackTrace0
20 bytes + 8 at 296010 by BackTrace0
20 bytes + 8 at 2B7548 by BackTrace0
20 bytes + 8 at 2B7570 by BackTrace0
20 bytes + 8 at 2B75B0 by BackTrace0
20 bytes + 8 at 2B75D8 by BackTrace0
20 bytes + 8 at 2B7600 by BackTrace0
20 bytes + 8 at 2B7628 by BackTrace0
208 bytes + 8 at 2B8198 by BackTrace0
400 bytes + 8 at 2B83A8 by BackTrace0
44 bytes + C at 2B87B0 by BackTrace0
1 bytes + F at 2B8800 by BackTrace0
10 bytes + 8 at 2B8810 by BackTrace0
12 bytes + E at 2B8828 by BackTrace0
440 bytes + 8 at 2B8848 by BackTrace0
*- - - - - - - - - - End of data for heap @ 290000 - - - - - - - - - -
*- - - - - - - - - - Start of data for heap @ 5E0000 - - - - - - - - - -
REQUESTED bytes + OVERHEAD at ADDRESS by BackTraceID
STACK if not already dumped.
*- - - - - - - - - - Heap 5E0000 Hogs - - - - - - - - - -
214 bytes + C at 5E07D0 by BackTrace0
800 bytes + 8 at 5E09F0 by BackTrace0
220 bytes + 8 at 5E2110 by BackTrace0
17 bytes + 9 at 5E2338 by BackTrace0
E4 bytes + C at 5E2358 by BackTrace0
31 bytes + F at 5E2448 by BackTrace0
1F bytes + 9 at 5E2488 by BackTrace0
2F bytes + 9 at 5E24B0 by BackTrace0
37 bytes + 9 at 5E24E8 by BackTrace0
3C bytes + C at 5E2528 by BackTrace0
31 bytes + F at 5E2570 by BackTrace0
18 bytes + 8 at 5E25B0 by BackTrace0
24 bytes + C at 5E25D0 by BackTrace0
49 bytes + F at 5E2600 by BackTrace0
14 bytes + C at 5E2658 by BackTrace0
18 bytes + 8 at 5E2678 by BackTrace0
30 bytes + 8 at 5E2698 by BackTrace0
1C bytes + C at 5E26D0 by BackTrace0
1C bytes + C at 5E26F8 by BackTrace0
D bytes + B at 5E2720 by BackTrace0
1E bytes + A at 5E2738 by BackTrace0
C2 bytes + E at 5E2760 by BackTrace0
33 bytes + D at 5E2830 by BackTrace0
B2 bytes + E at 5E2870 by BackTrace0
DA bytes + E at 5E2930 by BackTrace0
32 bytes + E at 5E2A18 by BackTrace0
19 bytes + F at 5E2A58 by BackTrace0
17 bytes + 9 at 5E2A80 by BackTrace0
E bytes + A at 5E2AA0 by BackTrace0
47E bytes + A at 5E2AB8 by BackTrace0
3E bytes + A at 5E2F40 by BackTrace0
1B bytes + D at 5E2F88 by BackTrace0
1D bytes + B at 5E2FB0 by BackTrace0
48 bytes + 8 at 5E2FD8 by BackTrace0
12 bytes + E at 5E3028 by BackTrace0
18 bytes + 8 at 5E3048 by BackTrace0
1B bytes + D at 5E3068 by BackTrace0
24 bytes + C at 5E3090 by BackTrace0
29 bytes + F at 5E30C0 by BackTrace0
1E bytes + A at 5E30F8 by BackTrace0
C bytes + C at 5E3120 by BackTrace0
41 bytes + F at 5E3138 by BackTrace0
17 bytes + 9 at 5E3188 by BackTrace0
2D bytes + B at 5E31A8 by BackTrace0
14 bytes + C at 5E31E0 by BackTrace0
F bytes + 9 at 5E3200 by BackTrace0
16 bytes + A at 5E3218 by BackTrace0
2A bytes + E at 5E3238 by BackTrace0
36 bytes + A at 5E3270 by BackTrace0
29 bytes + F at 5E32B0 by BackTrace0
16 bytes + A at 5E32E8 by BackTrace0
17 bytes + 9 at 5E3308 by BackTrace0
23 bytes + D at 5E3328 by BackTrace0
43 bytes + D at 5E3358 by BackTrace0
50 bytes + 8 at 5E33A8 by BackTrace0
40 bytes + 8 at 5E3400 by BackTrace0
12 bytes + E at 5E3448 by BackTrace0
3D bytes + B at 5E3468 by BackTrace0
18 bytes + 8 at 5E34B0 by BackTrace0
46 bytes + A at 5E34D0 by BackTrace0
5C bytes + C at 5E3520 by BackTrace0
80 bytes + 8 at 5E3588 by BackTrace0
800 bytes + 8 at 5E3610 by BackTrace0
1000 bytes + 8 at 5E3E18 by BackTrace0
*- - - - - - - - - - End of data for heap @ 5E0000 - - - - - - - - - -
Warning:
Warning: UMDH didn't find any allocations that have stacks collected.
Warning: UMDH has enabled allocation stack collection for the current running process.
Warning: To persist the setting for the application run GFLAGS.
Warning: A 32bit GFLAGS must be used. The command is:
Warning: gflags -i cppmemleak.exe +ust
Warning:
1.log
//
// UMDH: version 6.1.7015.0: Logtime 2013-09-26 13:58 - Machine=HARRYWU-PC - PID=3904
//
// Debug privilege has been enabled.
// OS version 6.1 Service Pack 1
// Umdh OS version 6.1
//
// Preparing to dump heap allocations.
// Only allocations for which the heap manager collected a stack are dumped. Allocations whithout stack are ignored.
// The stack trace for an allocation is dumped as a list of addresses. They will be resolved to function names at compare time.
//
// Connecting to process 3904 ...
// Process 3904 opened handle=52.
// Loaded modules:
// Base Size Module
// 400000 31000 H:\cppmemleak.exe
// 77400000 180000 C:\Windows\SysWOW64\ntdll.dll
// 76850000 110000 C:\Windows\syswow64\kernel32.dll
// 76960000 47000 C:\Windows\syswow64\KERNELBASE.dll
//
// Process modules enumerated.
// Debug library initialized ...
DBGHELP: ntdll - public symbols
d:\symbolcache\wntdll.pdb\4A252F11C9FF495DBA896EE81DFBE40B2\wntdll.pdb
*- - - - - - - - - - Start of data for heap @ 290000 - - - - - - - - - -
REQUESTED bytes + OVERHEAD at ADDRESS by BackTraceID
STACK if not already dumped.
*- - - - - - - - - - Heap 290000 Hogs - - - - - - - - - -
18 bytes + 8 at 2907D0 by BackTrace0
1E14 bytes + C at 2907F0 by BackTrace0
2C50 bytes + 8 at 292610 by BackTrace0
3C bytes + C at 295268 by BackTrace0
30 bytes + 8 at 2952B0 by BackTrace0
78 bytes + 8 at 2952E8 by BackTrace0
78 bytes + 8 at 295368 by BackTrace0
3C bytes + C at 2953E8 by BackTrace0
220 bytes + 8 at 295430 by BackTrace0
42 bytes + E at 295658 by BackTrace0
78 bytes + 8 at 2956A8 by BackTrace0
10 bytes + 8 at 295728 by BackTrace0
46 bytes + A at 295740 by BackTrace0
78 bytes + 8 at 295790 by BackTrace0
10 bytes + 8 at 295810 by BackTrace0
10 bytes + 8 at 295828 by BackTrace0
10 bytes + 8 at 295840 by BackTrace0
64 bytes + C at 295858 by BackTrace0
200 bytes + 8 at 2958C8 by BackTrace0
200 bytes + 8 at 295AD0 by BackTrace0
24 bytes + C at 295CD8 by BackTrace0
30 bytes + 8 at 295D08 by BackTrace0
20 bytes + 8 at 295D40 by BackTrace0
20 bytes + 8 at 295D68 by BackTrace0
30 bytes + 8 at 295D90 by BackTrace0
20 bytes + 8 at 295DC8 by BackTrace0
20 bytes + 8 at 295DF0 by BackTrace0
10 bytes + 8 at 295E18 by BackTrace0
20 bytes + 8 at 295E30 by BackTrace0
20 bytes + 8 at 295E58 by BackTrace0
20 bytes + 8 at 295E80 by BackTrace0
20 bytes + 8 at 295EA8 by BackTrace0
20 bytes + 8 at 295ED0 by BackTrace0
20 bytes + 8 at 295EF8 by BackTrace0
20 bytes + 8 at 295F20 by BackTrace0
20 bytes + 8 at 295F48 by BackTrace0
20 bytes + 8 at 295F70 by BackTrace0
20 bytes + 8 at 295F98 by BackTrace0
20 bytes + 8 at 295FC0 by BackTrace0
20 bytes + 8 at 295FE8 by BackTrace0
20 bytes + 8 at 296010 by BackTrace0
20 bytes + 8 at 2B7548 by BackTrace0
20 bytes + 8 at 2B7570 by BackTrace0
20 bytes + 8 at 2B75B0 by BackTrace0
20 bytes + 8 at 2B75D8 by BackTrace0
20 bytes + 8 at 2B7600 by BackTrace0
20 bytes + 8 at 2B7628 by BackTrace0
208 bytes + 8 at 2B8198 by BackTrace0
400 bytes + 8 at 2B83A8 by BackTrace0
44 bytes + C at 2B87B0 by BackTrace0
1 bytes + F at 2B8800 by BackTrace0
10 bytes + 8 at 2B8810 by BackTrace0
12 bytes + E at 2B8828 by BackTrace0
440 bytes + 8 at 2B8848 by BackTrace0
*- - - - - - - - - - End of data for heap @ 290000 - - - - - - - - - -
*- - - - - - - - - - Start of data for heap @ 5E0000 - - - - - - - - - -
REQUESTED bytes + OVERHEAD at ADDRESS by BackTraceID
STACK if not already dumped.
*- - - - - - - - - - Heap 5E0000 Hogs - - - - - - - - - -
214 bytes + C at 5E07D0 by BackTrace0
800 bytes + 8 at 5E09F0 by BackTrace0
220 bytes + 8 at 5E2110 by BackTrace0
17 bytes + 9 at 5E2338 by BackTrace0
E4 bytes + C at 5E2358 by BackTrace0
31 bytes + F at 5E2448 by BackTrace0
1F bytes + 9 at 5E2488 by BackTrace0
2F bytes + 9 at 5E24B0 by BackTrace0
37 bytes + 9 at 5E24E8 by BackTrace0
3C bytes + C at 5E2528 by BackTrace0
31 bytes + F at 5E2570 by BackTrace0
18 bytes + 8 at 5E25B0 by BackTrace0
24 bytes + C at 5E25D0 by BackTrace0
49 bytes + F at 5E2600 by BackTrace0
14 bytes + C at 5E2658 by BackTrace0
18 bytes + 8 at 5E2678 by BackTrace0
30 bytes + 8 at 5E2698 by BackTrace0
1C bytes + C at 5E26D0 by BackTrace0
1C bytes + C at 5E26F8 by BackTrace0
D bytes + B at 5E2720 by BackTrace0
1E bytes + A at 5E2738 by BackTrace0
C2 bytes + E at 5E2760 by BackTrace0
33 bytes + D at 5E2830 by BackTrace0
B2 bytes + E at 5E2870 by BackTrace0
DA bytes + E at 5E2930 by BackTrace0
32 bytes + E at 5E2A18 by BackTrace0
19 bytes + F at 5E2A58 by BackTrace0
17 bytes + 9 at 5E2A80 by BackTrace0
E bytes + A at 5E2AA0 by BackTrace0
47E bytes + A at 5E2AB8 by BackTrace0
3E bytes + A at 5E2F40 by BackTrace0
1B bytes + D at 5E2F88 by BackTrace0
1D bytes + B at 5E2FB0 by BackTrace0
48 bytes + 8 at 5E2FD8 by BackTrace0
12 bytes + E at 5E3028 by BackTrace0
18 bytes + 8 at 5E3048 by BackTrace0
1B bytes + D at 5E3068 by BackTrace0
24 bytes + C at 5E3090 by BackTrace0
29 bytes + F at 5E30C0 by BackTrace0
1E bytes + A at 5E30F8 by BackTrace0
C bytes + C at 5E3120 by BackTrace0
41 bytes + F at 5E3138 by BackTrace0
17 bytes + 9 at 5E3188 by BackTrace0
2D bytes + B at 5E31A8 by BackTrace0
14 bytes + C at 5E31E0 by BackTrace0
F bytes + 9 at 5E3200 by BackTrace0
16 bytes + A at 5E3218 by BackTrace0
2A bytes + E at 5E3238 by BackTrace0
36 bytes + A at 5E3270 by BackTrace0
29 bytes + F at 5E32B0 by BackTrace0
16 bytes + A at 5E32E8 by BackTrace0
17 bytes + 9 at 5E3308 by BackTrace0
23 bytes + D at 5E3328 by BackTrace0
43 bytes + D at 5E3358 by BackTrace0
50 bytes + 8 at 5E33A8 by BackTrace0
40 bytes + 8 at 5E3400 by BackTrace0
12 bytes + E at 5E3448 by BackTrace0
3D bytes + B at 5E3468 by BackTrace0
18 bytes + 8 at 5E34B0 by BackTrace0
46 bytes + A at 5E34D0 by BackTrace0
5C bytes + C at 5E3520 by BackTrace0
80 bytes + 8 at 5E3588 by BackTrace0
800 bytes + 8 at 5E3610 by BackTrace0
1000 bytes + 8 at 5E3E18 by BackTrace0
1000 bytes + 10 at 5E4E20 by BackTrace1
774C9955
77433CFE
401C77
40123C
401077
401108
401118
401128
40114A
401569
7686336A
77439F72
77439F45
1000 bytes + 10 at 5E6E40 by BackTrace1
1000 bytes + 10 at 5E8E60 by BackTrace1
1000 bytes + 10 at 5EAE80 by BackTrace1
1000 bytes + 10 at 5ECEA0 by BackTrace1
1000 bytes + 10 at 5EEEC0 by BackTrace1
1000 bytes + 10 at 441058 by BackTrace1
1000 bytes + 10 at 443078 by BackTrace1
1000 bytes + 10 at 445098 by BackTrace1
1000 bytes + 10 at 4470B8 by BackTrace1
1000 bytes + 10 at 4490D8 by BackTrace1
1000 bytes + 10 at 44B0F8 by BackTrace1
1000 bytes + 10 at 44D118 by BackTrace1
1000 bytes + 10 at 44F138 by BackTrace1
1000 bytes + 10 at 451158 by BackTrace1
1000 bytes + 10 at 453178 by BackTrace1
1000 bytes + 10 at 455198 by BackTrace1
1000 bytes + 10 at 4571B8 by BackTrace1
1000 bytes + 10 at 4591D8 by BackTrace1
1000 bytes + 10 at 45B1F8 by BackTrace1
1000 bytes + 10 at 45D218 by BackTrace1
1000 bytes + 10 at 45F238 by BackTrace1
1000 bytes + 10 at 461258 by BackTrace1
1000 bytes + 10 at 463278 by BackTrace1
1000 bytes + 10 at 465298 by BackTrace1
1000 bytes + 10 at 4672B8 by BackTrace1
1000 bytes + 10 at 4692D8 by BackTrace1
1000 bytes + 10 at 46B2F8 by BackTrace1
1000 bytes + 10 at 46D318 by BackTrace1
1000 bytes + 10 at 46F338 by BackTrace1
1000 bytes + 10 at 471358 by BackTrace1
1000 bytes + 10 at 473378 by BackTrace1
1000 bytes + 10 at 475398 by BackTrace1
1000 bytes + 10 at 4773B8 by BackTrace1
1000 bytes + 10 at 4793D8 by BackTrace1
1000 bytes + 10 at 47B3F8 by BackTrace1
1000 bytes + 10 at 47D418 by BackTrace1
1000 bytes + 10 at 47F438 by BackTrace1
1000 bytes + 10 at 481458 by BackTrace1
1000 bytes + 10 at 483478 by BackTrace1
1000 bytes + 10 at 485498 by BackTrace1
1000 bytes + 10 at 4874B8 by BackTrace1
1000 bytes + 10 at 4894D8 by BackTrace1
1000 bytes + 10 at 48B4F8 by BackTrace1
1000 bytes + 10 at 48D518 by BackTrace1
1000 bytes + 10 at 48F538 by BackTrace1
1000 bytes + 10 at 491558 by BackTrace1
1000 bytes + 10 at 493578 by BackTrace1
1000 bytes + 10 at 495598 by BackTrace1
1000 bytes + 10 at 4975B8 by BackTrace1
*- - - - - - - - - - End of data for heap @ 5E0000 - - - - - - - - - -