在WinDBG中使用foreach


我們可以使用.foreach命令來加工一個或多個debugger命令的輸出結果, 可以把結果集中的每一條結果作為參數傳遞給一個或多個其他的命令.

 

語法:

.foreach [Options] ( Variable  { InCommands } ) { OutCommands }
.foreach [Options] /s ( Variable  "InString" ) { OutCommands }
.foreach [Options] /f ( Variable  "InFile" ) { OutCommands }

 

/pS  InitialSkipNumber 

會引發初始的一些token被忽略, InitialSkipNumber 代表着InCommands里的被跳過的由空格分開的字符串的個數.

 

/ps SkipNumber

這個選項會在每處理一個結果條目的時候都重復跳過的空格隔開的字符串的個數. 每次一個token被傳遞給OutCommands之前, SkipNumber個token會被跳過.

 

Variable

為每一條InCommands的結果起的變量的名字.

 

/s

采用字符串作為輸入項的集合.

 

/f

輸入項的集合在文件當中.

 

一些命令舉例:

.foreach /pS 1 /ps 1 /f (o "c:\guids.txt") {dt GUID ${o}}

語法意義: 跳過第一個token, 然后每處理一行的時候都跳過一個token, 從c:\guids.txt中讀入的每一行作為變量0, 傳遞給命令dt GUID ${o}.

 

實際應用: 該命令可以處理類似這樣的文件:

[0] 3847574…9920394

[1] 3847583…u920123

[2] 3847574…9920454

………
[40] 3947576...8285572

 

把[n] 后面的數字轉換為GUID類型顯示出來.

 

.foreach(myVariable {!dumpheap -type System.String -min 6500 -short}){!do myVariable;.echo *************}

具體意義, 請詳見Using WinDbg - Advanced commands

 

參考資料:

WinDBG幫助

 

Using WinDbg - Advanced commands

http://blogs.msdn.com/b/johan/archive/2008/01/23/using-windbg-advanced-commands.aspx


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com