3

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

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

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

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

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

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

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

4

1 回答 1

4

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

bp module!Class::funcname+0x0ff5E1 ".if(cond) {.logappend c:\mylog.txt;exp2;.logclose;gc; } .else {gc}" 
于 2012-11-15T13:20:06.117 回答