我试图过滤命令的输出,例如lm
的输出太长。
与lm | find "some_string"
类似的东西。
windbg支持吗?我无法在网上找到任何关于它的文件。
答案 0 :(得分:5)
我通常使用.shell
命令,使用windows工具(如findstr)或使用cygwin安装的二进制文件。 .shell command help from MSDN
示例:
Windbg版本,虽然这也适用于旧版本:
0:000> version
[snip]
Microsoft (R) Windows Debugger Version 10.0.14321.1024 X86
Copyright (c) Microsoft Corporation. All rights reserved.
开始记事本
0:000> |
. 0 id: 31a0 create name: notepad.exe
列出模块:
0:000> lm
start end module name
00030000 0006e000 notepad (deferred)
52270000 52280000 FeClient (deferred)
6d360000 6d4af000 PROPSYS (deferred)
6f650000 6f879000 iertutil (deferred)
6f880000 6fa14000 urlmon (deferred)
73c40000 73c5b000 bcrypt (deferred)
73dc0000 73e2a000 WINSPOOL (deferred)
73ee0000 740ea000 COMCTL32 (deferred)
74130000 7413a000 CRYPTBASE (deferred)
74140000 7415e000 SspiCli (deferred)
746b0000 7472b000 msvcp_win (deferred)
74730000 7488f000 USER32 (deferred)
74890000 74970000 KERNEL32 (deferred)
749d0000 74a58000 shcore (deferred)
[snip]
使用Windows findstr
获取所有带有“kern”(不区分大小写)
0:000> .shell -ci "lm" findstr /i kern
74890000 74970000 KERNEL32 (deferred)
76ac0000 76acd000 kernel_appcore (deferred)
77530000 776d1000 KERNELBASE (deferred)
.shell: Process exited
与grep.exe相同(来自cygwin,位于我的%PATH%
)
0:000> .shell -ci "lm" grep.exe -i kern
74890000 74970000 KERNEL32 (deferred)
76ac0000 76acd000 kernel_appcore (deferred)
77530000 776d1000 KERNELBASE (deferred)
.shell: Process exited
[编辑]
这个命令非常强大,因为你可以轻松地将windbg的命令输出发送给脚本解释器(我在工作中使用了很多python):
.shell -ci "<windbg command>" python mypythonscript.py
答案 1 :(得分:5)
我刚刚写了Grep-like WinDbg extension,如果符合您的要求,请尝试回复我。
支持的命令如下:
bool is_in(unordered_set<string>& S, string P)
{
auto it = S.find(P);
return (it != S.end());
}
答案 2 :(得分:3)
如果你不能使用shell,那么像denis这样的domdbg扩展很少。 Mex by microsoft等提供grep / findstr实现。所以你可以像使用它一样。 !grep foo&#34; lm&#34;
答案 3 :(得分:0)