Windbg - 可以抑制 .outmask 1 或 .outmask /d 的输出吗?
Windbg - possible to suppress output for .outmask 1 or .outmask /d?
我在 Windbg 脚本中使用 .do
循环,所有逻辑都运行良好。
在那个 .do
循环中,我正在做一个 .f+
并且我使用 .outmask- 1
来抑制 .f+
的喋喋不休,它将帧回显到你,就这样23 00000002a9a2f7b0 0000000000000000 ntdll!RtlUserThreadStart+0x1d
。它现在可以围绕堆栈的帧进行迭代,而无需将每个帧回显到命令 Window.
然而,在 重置 .outmask
时 .outmask 1
或 .outmask /d
以下行总是回显 Client 00000000002873A0 mask is 3F7
到命令 Window.
当我处于一个循环中时,我的 objective 是为了抑制 .f+
的冗长输出,我最不想要的是 .outmask
也一样健谈在 那个循环中。有没有办法抑制它?
我的循环看起来像这样:
.frame 0n0
r $t0 = 0
.do
{
!for_each_local .if ($spat ("@#Local","foo") == 1) { ?? foo->bar }
.outmask- 1
.f+
.outmask 1
r $t0 = @$t0+1
}
(@$t0 < @$t1)
}
WinDbg 的内部脚本功能有些混乱。恕我直言,WinDbg 并不是真正为此类任务设计的。如果您需要更复杂的脚本,请尝试 pykd, mdbg or JavaScript Debugger Scripts (Microsoft)
防止输出某些内容的一般方法是
.foreach (output {<put your command here>}) {}
即你的情况
.foreach (output {.outmask 1}) {}
它将输出的每个单词作为变量 output
传递给循环,而循环对它不做任何处理。
我希望您能够将它集成到您的脚本中而没有任何其他副作用。
以下脚本适用于 运行 $>a<
:
.echo "Before"
.frame 0n0
r $t0 = 0
.do {
!for_each_local .if ($spat ("@#Local","foo") == 1) { ?? foo->bar }
.outmask- 1
.f+
.foreach (output {.outmask 1}) {}
r $t0 = @$t0+1
}
(@$t0 < @$t1)
.echo "After"
我在 Windbg 脚本中使用 .do
循环,所有逻辑都运行良好。
在那个 .do
循环中,我正在做一个 .f+
并且我使用 .outmask- 1
来抑制 .f+
的喋喋不休,它将帧回显到你,就这样23 00000002a9a2f7b0 0000000000000000 ntdll!RtlUserThreadStart+0x1d
。它现在可以围绕堆栈的帧进行迭代,而无需将每个帧回显到命令 Window.
然而,在 重置 .outmask
时 .outmask 1
或 .outmask /d
以下行总是回显 Client 00000000002873A0 mask is 3F7
到命令 Window.
当我处于一个循环中时,我的 objective 是为了抑制 .f+
的冗长输出,我最不想要的是 .outmask
也一样健谈在 那个循环中。有没有办法抑制它?
我的循环看起来像这样:
.frame 0n0
r $t0 = 0
.do
{
!for_each_local .if ($spat ("@#Local","foo") == 1) { ?? foo->bar }
.outmask- 1
.f+
.outmask 1
r $t0 = @$t0+1
}
(@$t0 < @$t1)
}
WinDbg 的内部脚本功能有些混乱。恕我直言,WinDbg 并不是真正为此类任务设计的。如果您需要更复杂的脚本,请尝试 pykd, mdbg or JavaScript Debugger Scripts (Microsoft)
防止输出某些内容的一般方法是
.foreach (output {<put your command here>}) {}
即你的情况
.foreach (output {.outmask 1}) {}
它将输出的每个单词作为变量 output
传递给循环,而循环对它不做任何处理。
我希望您能够将它集成到您的脚本中而没有任何其他副作用。
以下脚本适用于 运行 $>a<
:
.echo "Before"
.frame 0n0
r $t0 = 0
.do {
!for_each_local .if ($spat ("@#Local","foo") == 1) { ?? foo->bar }
.outmask- 1
.f+
.foreach (output {.outmask 1}) {}
r $t0 = @$t0+1
}
(@$t0 < @$t1)
.echo "After"