2015-03-13 75 views
0

我想使用windbg将变量值写入文件。例如,如果断点匹配,如何将$ip值写入文件?

回答

4

要读取注册表值,输入命令:

r ip

您可以编写窗口中的内容使用GUI文本:

编辑 - >写窗口文本至档案'

或使用logopen

一个例子完整的命令从我的WinDbg会话如下所示:

0:392> r ip 
ip=590 
0:392> .logopen c:\data\ip.txt 
Opened log file 'c:\data\ip.txt' 
0:392> .echo ip register val:; r ip 
ip register val: 
ip=590 
0:392> .logclose 
Closing open log file c:\data\ip.txt 

所以我在这里使用.logopen然后发出.echo命令(可选真的,但它可以让你写输出一些注释打开日志文件),然后使用r ip显示$ip寄存器值,最后关闭日志.logclose

这将产生一个日志包含以下内容:

Opened log file 'c:\data\ip.txt' 
0:392> .echo ip register val:; r ip 
ip register val: 
ip=590 
0:392> .logclose 
Closing open log file c:\data\ip.txt 

所以整个事情会是这样的:

bp myll!myfunc ".logopen c:\folder\ip.txt; .echo ip register value:; r ip; .logclose" 

当然替代BP PARAMS和您的需求日志的位置。

由于ThomasW指出,这会在每次命中断点因此,如果这种行为是不可取的,然后使用.logappend代替

+0

难道'.logopen'每次覆盖该文件时覆盖日志?你可以用'/ t'开关来添加时间或者使用'.logappend'。 – 2015-03-13 21:17:54

+0

如果您不喜欢数字格式,您还可以使用'.printf'%p \ n“,@ ip;'或类似的代替'r ip'。 – 2015-03-13 21:25:12

+0

@ThomasW。这是真的,但OP真正想要的东西还没有被定义,但这是一个公平点 – EdChum 2015-03-13 21:31:30