2013-06-28 41 views
0

我讀了Tess的博客,關於dump the asp.net request,我讀了代碼, 我想知道爲什麼.foreach命令需要在博客的代碼中進行如此多的「/ ps 99」切換。windbg .net調試命令.foreach,如何使用/ ps和/ pS?

例如代碼:

$$ RETURNCODE = CONTEXT->RESPONSE->_STATUSCODE ((CONTEXT+0X14)+50) 
$$ ---------------------------------------------------------------------------------- 
    .foreach /pS 2 /ps 99 (token {?poi(poi(${hc}+0x14)+50)}){ 
     .printf "${token}\t\t" 
    }; 

這個代碼在.NET 2,I做一些試驗我自己達網絡4,

RETURNCODE =上下文> 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 

.foreach

  • /PS 2 - >意味着跳過初始2,所以第2 '評估表達式:' 將跳過。

  • /ps 99 - >但爲什麼這裏需要99?

+0

在文章的評論部分提出這個問題。她仍然積極博客,並可能會回答你。 –

回答

2

/ps 99的意思是「跳過下99個令牌,然後採取下一個,然後跳到下一個99等」。這裏的99恰好是任意的。她只想使用一個令牌,但無法通過.foreach命令執行此操作。她挑選了一個任意高的數字來有效地告訴它「跳過其餘的令牌」。

/ps/pS之間的差異可以在WinDbg的幫助文件中找到:

/PSInitialSkipNumber

導致一些初始令牌被跳過。 InitialSkipNumber指定將不會傳遞到指定的輸出令牌的數目OutCommands

/PSSkipNumber

導致令牌來重複一個命令被處理,每次被跳過。在每次將令牌傳遞給指定的OutCommands後,許多等於SkipNumber的令牌將被忽略。

+0

非常感謝你 – gfan

+0

沒問題。當你找到答案有幫助時,不要忘記注意並接受! –