【问题标题】:How to write $ip value to file in windbg by windbg command如何通过windbg命令将$ip值写入windbg中的文件
【发布时间】:2015-03-14 05:33:06
【问题描述】:

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

【问题讨论】:

    标签: windbg


    【解决方案1】:

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

    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 命令(实际上是可选的,但它允许您将输出写入一些cmets),然后使用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 参数和日志位置。

    正如 ThomasW 所指出的,这将在每次遇到断点时覆盖日志,因此如果不希望出现这种行为,请改用 .logappend

    【讨论】:

    • .logopen 不会每次都覆盖文件吗?您可以将它与/t 开关一起使用来添加时间,或者改用.logappend
    • 如果你不喜欢数字格式,你也可以使用.printf "%p\n",@ip;或类似的代替r ip
    • @ThomasW。这是真的,但 OP 真正想要的还没有定义,但这是一个公平的观点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    相关资源
    最近更新 更多