Debugging net调试命令.foreach,如何使用/ps和/ps?

Debugging net调试命令.foreach,如何使用/ps和/ps?,debugging,foreach,windbg,ps,Debugging,Foreach,Windbg,Ps,我读了苔丝的博客,我读了代码, 我想知道为什么.foreach命令在blog的代码中需要这么多“/ps99”开关 例如,代码: $$ RETURNCODE = CONTEXT->RESPONSE->_STATUSCODE ((CONTEXT+0X14)+50) $$ ---------------------------------------------------------------------------------- .foreach /pS 2 /ps 99

我读了苔丝的博客,我读了代码, 我想知道为什么.foreach命令在blog的代码中需要这么多“/ps99”开关

例如,代码:

$$ RETURNCODE = CONTEXT->RESPONSE->_STATUSCODE ((CONTEXT+0X14)+50)
$$ ---------------------------------------------------------------------------------- 
    .foreach /pS 2 /ps 99 (token {?poi(poi(${hc}+0x14)+50)}){
        .printf "${token}\t\t"
    };
这段代码在.NET2上,我在自己的.NET4上做了一些测试

RETURNCODE=CONTEXT->RESPONSE->_STATUSCODE((CONTEXT+0X28)+b0),偏移量在.net4上更改

0:000> ? poi(0x00000000ffc59a58+0x28)+0xb0
Evaluate expression: 4291217184 = 00000000`ffc6c720
0:000> ? poi(poi(0x000000011fa2b948+0x28)+0xb0)
Evaluate expression: 200 = 00000000`000000c8
弗雷奇先生

  • /pS 2-->表示跳过最初的2,因此前两个“计算表达式”将跳过

  • /ps 99-->但为什么这里需要99


    • /ps 99
      的意思是“跳过下一个99个令牌,然后拿走下一个,然后跳过下一个99,以此类推”。这里的99是任意的。她只想获取一个令牌,但使用
      .foreach
      命令无法实现。她选择了一个任意高的数字,有效地告诉它“跳过其余的代币”

      可以在WinDbg帮助文件中找到
      /ps
      /ps
      之间的差异:

      /pS初始SkipNumber

      导致跳过某些初始标记。InitialSkipNumber指定将不传递给指定的OutCommand的输出令牌数

      /psSkipNumber

      导致每次处理命令时重复跳过标记。每次将令牌传递给指定的OUTCOMANDS后,等于SkipNumber值的令牌数将被忽略


      /ps 99
      表示“跳过接下来的99个令牌,然后获取下一个令牌,然后跳过接下来的99个令牌,以此类推”。这里的99是任意的。她只想获取一个令牌,但使用
      .foreach
      命令无法实现。她选择了一个任意高的数字,有效地告诉它“跳过其余的代币”

      可以在WinDbg帮助文件中找到
      /ps
      /ps
      之间的差异:

      /pS初始SkipNumber

      导致跳过某些初始标记。InitialSkipNumber指定将不传递给指定的OutCommand的输出令牌数

      /psSkipNumber

      导致每次处理命令时重复跳过标记。每次将令牌传递给指定的OUTCOMANDS后,等于SkipNumber值的令牌数将被忽略


      在文章的评论部分问这个问题。她仍然活跃在博客上,可能会回答你。在文章的评论部分问这个问题。她仍然活跃在博客上,可能会回答你。