在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

posted on   中道学友  阅读(1169)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律

导航

< 2010年6月 >
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 1 2 3
4 5 6 7 8 9 10

技术追求准确,态度积极向上

点击右上角即可分享
微信分享提示