WinDbg has the .if statement for conditional execution of commands:
.if (Condition) { Commands } .else { Commands }
For Condition, it's not possible to use WinDbg commands. Is there any indirect way of using commands for the condition, e.g. through pseudo registers?
Example task to accomplish: If a logfile is already opened, do nothing. If no logfile is open, use .logopen /t /u /d
With .logfile, I can find out whether a log is open or not. But how to parse that output and how to assign the result to a pseudo register?
Any other way without pseudo registers is also welcome.
As the example may not seem very useful, consider the following tasks which can be automated by scripting or the .cmdtree window:
- Loading the correct version of SOS, e.g.
.if (lm m clr == clr) { .loadby sos clr } .elseif (lm m mscorwks == mscorwks) {.loadby sos mscorwks}
- Things I always forget to do, e.g.
.if (| == myprocess) {.childdbg 1; .sympath+ mydir}