如何通过 windbg 命令将 $ip 值写入 windbg 文件

How to write $ip value to file in windbg by windbg command

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

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

r ip

您可以使用 GUI 将 window 的内容写入文本:

Edit->Write Window Text To File'

或使用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 命令(实际上是可选的,但它允许你在输出中写一些注释),然后显示 $ip 使用 r 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 参数和日志位置。

正如 ThomasW 所指出的,这将在每次命中断点时覆盖日志,所以如果这种行为是不可取的,那么使用 .logappend 代替