.foreach语句中的语法错误

时间:2016-10-10 22:04:20

标签: windbg

我有一个.dmp用于池泄漏案例,我已经识别出导致问题的标签,但是为该标签加载了很多模块。我试图在WinDBG中使用eb编写脚本来编辑模块名称,以便我可以识别哪个是哪个。我已经在这个语句上尝试了很多不同的内容,我无法让它完全按照我想要的方式迭代所有与池标记相关的模块,并通过用标记替换标记的最后一个字母来重命名它们。号。

.block {r @$t0=0x31; !for_each_module .foreach( obj {s -[1]a @#Base @#End "FMfn"}){r @$t0 = @$t0+1; eb ${obj}+3 @$t0}}

这是我收到的最新错误

@$t0+1'
                                                                    ^ Syntax error in '.foreach( obj {s -[1]a fffff96000925000 fffff9600095f000 "FMfn"}){r @$t0 = @$t0+1'
Couldn't resolve error at '${obj}+3 $t0}'

任何人都可以帮我确定我出错的地方吗?

1 个答案:

答案 0 :(得分:2)

根据文档,!for_each_module需要在命令字符串周围加上引号:

!for_each_module ["CommandString"]

根据我的测试,他们似乎不是可选的,所以添加引号并转义现有的引号,如下所示:

.block {r @$t0=0x31; !for_each_module ".foreach( obj {s -[1]a @#Base @#End \"FMfn\"}){r @$t0 = @$t0+1; eb ${obj}+3 @$t0}"}