Memory leaks 使用WinDbg对非托管代码进行内存泄漏调试

Memory leaks 使用WinDbg对非托管代码进行内存泄漏调试,memory-leaks,windbg,Memory Leaks,Windbg,我正在使用WinDbg调试一个潜在的内存泄漏和一些进程转储 快跑!堆-针对新启动的转储: Result: ************************************************************************************************************************ NT HEAP STATS BELOW ************

我正在使用WinDbg调试一个潜在的内存泄漏和一些进程转储

快跑!堆-针对新启动的转储:

Result:
************************************************************************************************************************
                                            NT HEAP STATS BELOW
************************************************************************************************************************
LFH Key                   : 0x000000db58680073
Termination on corruption : ENABLED
        Heap     Flags   Reserv  Commit  Virt   Free  List   UCR  Virt  Lock  Fast 
                            (k)     (k)    (k)     (k) length      blocks cont. heap 
-------------------------------------------------------------------------------------
0000005a8f4c0000 00000002   48620  24056  48228    280   269     8    3      0   LFH
0000005a8f2e0000 00008000      64      4     64      2     1     1    0      0      
0000005a8f5f0000 00001002    1472     96   1080      7     6     2    0      0   LFH
0000005a8f7b0000 00041002     508      8    508      5     1     1    0      0      
0000005a8f6b0000 00001002    3516   1544   3124     12    42     3    0      0   LFH
0000005a8f9b0000 00041002     900    136    508      0     2     1    0      0   LFH
0000005a8f860000 00001002     900    248    508      2    20     1    0      0   LFH
0000005a911e0000 00041002     508      8    508      5     1     1    0      0      
0000005aa9eb0000 00001002     900     44    508      3     3     1    0      0   LFH
0000005aad550000 00001002    1472     88   1080      5     6     2    0      0   LFH
0000005aad670000 00001002     508      8    508      5     1     1    0      0      
0000005aaf260000 00001002     452     32     60      7     3     1    0      0   LFH
0000005aaf230000 00001002    1472    136   1080      4     6     2    0      0   LFH
0000005ab14c0000 00001002     900    196    508     45    12     1    0      0   LFH
0000005ab6790000 00001002    1472     84   1080     10     4     2    0      0   LFH
0000005ab5b50000 00001002     900    188    508    128    16     1    0      0   LFH
0000005ab5c70000 00001002     452     40     60      1     3     1    0      0   LFH
0000005ab5cf0000 00001002     452     44     60      5     3     1    0      0   LFH
-------------------------------------------------------------------------------------
快跑!在执行某些操作后,针对转储执行heap-s:

Result:
************************************************************************************************************************
                                            NT HEAP STATS BELOW
************************************************************************************************************************
LFH Key                   : 0x000000db58680073
Termination on corruption : ENABLED
        Heap     Flags   Reserv  Commit  Virt   Free  List   UCR  Virt  Lock  Fast 
                            (k)     (k)    (k)     (k) length      blocks cont. heap 
-------------------------------------------------------------------------------------
0000005a8f4c0000 00000002  858020 438588 857628  43794  1185   167    8     ac   LFH
    Virtual address fragmentation  48 % (167 uncommited ranges)
0000005a8f2e0000 00008000      64      4     64      2     1     1    0      0      
0000005a8f5f0000 00001002    1472    164   1080      5     6     2    0      0   LFH
0000005a8f7b0000 00041002     508      8    508      5     1     1    0      0      
0000005a8f6b0000 00001002    7608   3448   7216     90   101     4    0      0   LFH
0000005a8f9b0000 00041002     900    152    508      4     2     1    0      0   LFH
0000005a8f860000 00001002    1920    604   1528      4    43     2    0      0   LFH
0000005a911e0000 00041002     508      8    508      5     1     1    0      0      
0000005aa9eb0000 00001002     900     56    508      7     5     1    0      0   LFH
0000005aad550000 00001002    1472    160   1080      7     8     2    0      0   LFH
0000005aad670000 00001002     508      8    508      5     1     1    0      0      
0000005aaf260000 00001002     452     32     60      7     3     1    0      0   LFH
0000005aaf230000 00001002    1472    392   1080     30    14     2    0      0   LFH
0000005ab14c0000 00001002     900    216    508     53    13     1    0      0   LFH
0000005ab6790000 00001002    1472    160   1080      4     5     2    0      0   LFH
0000005ab5b50000 00001002     900    188    508    130    18     1    0      0   LFH
0000005ab5c70000 00001002    1472     84   1080      5     5     2    0      0   LFH
0000005ab5cf0000 00001002    1472    100   1080      4     4     2    0      0   LFH
-------------------------------------------------------------------------------------
0000005a8f4c0000上的堆增长了很多

快跑!heap-stat-h0000005a8f4c0000:

Resut:
heap @ 0000005a8f4c0000
group-by: TOTSIZE max-display: 20
    size     #blocks     total     ( %) (percent of total busy bytes)
    1000 2 - 2000  (19.45)
    146a 1 - 146a  (12.41)
    110 11 - 1210  (10.98)
    100 b - b00  (6.69)
    900 1 - 900  (5.47)
    468 2 - 8d0  (5.36)
    82e 1 - 82e  (4.97)
    800 1 - 800  (4.86)
    400 2 - 800  (4.86)
    4e8 1 - 4e8  (2.98)
    50 f - 4b0  (2.85)
    228 2 - 450  (2.62)
    410 1 - 410  (2.47)
    26c 1 - 26c  (1.47)
    238 1 - 238  (1.35)
    208 1 - 208  (1.23)
    30 8 - 180  (0.91)
    20 b - 160  (0.84)
    68 3 - 138  (0.74)
    60 3 - 120  (0.68)
我得到的大小和块数与清洁启动完全相同

接下来我该怎么办?如何找到0000005a8f4c0000增长的原因


我应该在gflag中启用某些功能吗?

!heap无助于调试托管内存泄漏,因为运行时使用
VirtualAlloc
API分配自己的堆。在网上查看有关如何使用SOS扩展的说明,尤其是
!SOS.DumpHeap
@SteveJohnson:为什么你认为它是一个托管应用程序?
!heap
命令是本机命令。如果它显示了一些东西,那么它就不是.NET。然而,我同意这个堆中的虚拟块的数量已经从3个增加到了8个,因此研究VirtualAlloc的片段是正确的方法。只是推理(.NET)不适合我。HeapAlloc将把大于512kB的分配直接转发给VirtualAlloc(),因为在其上应用堆模式几乎没有意义。因此,新的5个虚拟块可能很大。对不起。我回答了几个.NET调试问题,而你的问题是我列表中的下一个问题,所以我错误地认为它是一个托管应用程序。“对不起,误传了。”@ThomasWeller:谢谢你,托马斯。如何使用WinDbg追踪虚拟化的作品?我还没有任何线索。