【问题标题】:Windbg console loggingWindbg 控制台日志记录
【发布时间】:2012-11-15 23:00:51
【问题描述】:

是否可以有条件或无条件地在 Windbg 控制台中记录某些内容。我可以更改我的源代码并这样做,但由于各种原因,包括签出 cerain 文件、编辑代码、构建和部署,这很乏味。这是非常乏味和非生产性的。 我正在寻找某些东西,例如条件断点。

bp module!Class::funcname+0x0ff5E1 ".if(cond) {exp1;exp2 } .else {gc}" 

根据 cond 登录到 windbg 控制台(可能始终为 cond=1)。我已经使用 ?? 命令在调试时打印值,但是是否可以自动化,因为我需要许多值并且一个接一个地执行它需要时间,而且也没有格式化!我正在寻找类似上述条件断点或任何其他方式的东西。任何教程/示例肯定会有所帮助。

编辑: 好吧,我想出的一种方法可能是

bp module!Class::Func+0x0FF5E1 ".if(cond) {.echo The value of variable ALPHA is; ?? ALPHA;gc} .else {.echo SomeOtherTextIfNeeded; gc;}:"

这可能很长,但很好,因为我们还必须在代码中添加等效的行才能在日志中显示这些日志消息;在这里我们不更改代码。 肯定会有其他我感兴趣的方式在这里看到:)

另一个可能是使用格式化输出;最重要的是,如果它的格式和变量名可以从文件中读取,那就太好了!!

【问题讨论】:

    标签: debugging windbg


    【解决方案1】:

    您可以通过编程方式重用同一日志来打开和关闭日志文件

    bp module!Class::funcname+0x0ff5E1 ".if(cond) {.logappend c:\mylog.txt;exp2;.logclose;gc; } .else {gc}" 
    

    【讨论】: