如果输出匹配,则返回windbg脚本

时间:2010-08-05 03:47:02

标签: windbg

我想在某个函数上设置一个断点,每次断开时,我都想搜索某个字符串的内存范围。如果该字符串存在,我不想继续。如果是,则继续。有什么建议?我认为它看起来像这样:

.foreach /s line (s -a 0 L?0xfffffff "UNIQUE_STRING") { .if (line =~ "UNIQUE_STRING") { .break } .else { gc } }

我对.foreach命令并不太熟悉,所以我可能会把它弄错了。我的另一个想法是这样的:

.if ((.shell -ci "s -a 0 L?0xfffffff \"UNIQUE_STRING\"" findstr "UNIQUE_STRING") != "") {} .else { gc }

有人做过这样的事吗? (对不起,其中一些是极端伪代码)

2 个答案:

答案 0 :(得分:0)

您是否考虑过将此作为扩展名?如果找不到模式,IDebugDataSpaces :: SearchVirtual将返回错误,这将使您更容易。

-Scott

答案 1 :(得分:0)

我认为你的命令语法有点不对劲。尝试:

bu module!Class :: Function“.if(condition){。echo hit_breakpoint} .else {gc}”

每次调试器遇到Function()时,如果条件为真,它将执行echo语句。

在.hh(windbg帮助)中查找“条件断点”以获取重要信息。