Windbg!将输出堆到.foreach

Windbg!将输出堆到.foreach,windbg,Windbg,在windbg中进行一些调试,我希望能够遍历给定大小的每个堆分配,然后对其进行一些分析(现在只做dd)。问题是!垃圾堆把东西扔得不干净 我知道我可以使用.foreach标志跳过第一个X或每个Y标记,但似乎无法实现这一点 基本上是想做这样的事情: .foreach (ADDR {!heap -flt s <size of allocation>}) {dd ADDR} .foreach(ADDR{!heap-flt s}{dd ADDR} 有没有一种方法,除了输出到一个文件,做一些

在windbg中进行一些调试,我希望能够遍历给定大小的每个堆分配,然后对其进行一些分析(现在只做dd)。问题是!垃圾堆把东西扔得不干净

我知道我可以使用.foreach标志跳过第一个X或每个Y标记,但似乎无法实现这一点

基本上是想做这样的事情:

.foreach (ADDR {!heap -flt s <size of allocation>}) {dd ADDR}
.foreach(ADDR{!heap-flt s}{dd ADDR}

有没有一种方法,除了输出到一个文件,做一些awking然后反馈回来?

好吧,我不认为
!heap
命令有一个短选项可在
.foreach
中使用。您可能可以尝试使用
.shell
命令grep输出


HTH

好吧,我不认为
!heap
命令有一个短选项可在
.foreach
中使用。您可能可以尝试使用
.shell
命令grep输出


HTH

我一直在寻找同一个问题的答案,下面是我找到的最简单的方法:

  • !heap -flt s [your alloc size]
    
  • Ctrl+A,在某些文本文件中复制并通过,例如,
    c:\temp\test.txt

  • 从文件中删除所有不必要的行,使其看起来像:

    0000000011af12e0 0400 0000  [00]   0000000011af12f0    03ff0 - (busy)
    0000000011af52e0 0400 0400  [00]   0000000011af52f0    03ff0 - (busy)
    0000000011af92e0 0400 0400  [00]   0000000011af92f0    03ff0 - (busy)
    0000000011afd2e0 0400 0400  [00]   0000000011afd2f0    03ff0 - (busy)....
    
  • 然后在WinDbg命令中运行,如下所示:

    .logopen /t c:\temp\Output.txt
    
    将进一步的输出保存到某个文件,因为您将有一个looong文件

  • 最后,以文件作为参数运行foreach:

    .foreach /pS4 /ps3 /f ( obj  "c:\temp\test.txt" ) { !heap -p -a obj } 
    

  • 万岁!有效:)

    我一直在寻找同一个问题的答案,下面是我找到的最简单的方法:

  • !heap -flt s [your alloc size]
    
  • Ctrl+A,在某些文本文件中复制并通过,例如,
    c:\temp\test.txt

  • 从文件中删除所有不必要的行,使其看起来像:

    0000000011af12e0 0400 0000  [00]   0000000011af12f0    03ff0 - (busy)
    0000000011af52e0 0400 0400  [00]   0000000011af52f0    03ff0 - (busy)
    0000000011af92e0 0400 0400  [00]   0000000011af92f0    03ff0 - (busy)
    0000000011afd2e0 0400 0400  [00]   0000000011afd2f0    03ff0 - (busy)....
    
  • 然后在WinDbg命令中运行,如下所示:

    .logopen /t c:\temp\Output.txt
    
    将进一步的输出保存到某个文件,因为您将有一个looong文件

  • 最后,以文件作为参数运行foreach:

    .foreach /pS4 /ps3 /f ( obj  "c:\temp\test.txt" ) { !heap -p -a obj } 
    

  • 万岁!它是有效的:)

    啊,要想得到这么简单的东西,需要解析出一堆东西!不过谢谢你的回答。啊,要想得到这么简单的东西,需要分析很多东西!谢谢你的回答。