Windbg:有没有办法导入/导出本地断点?



是否有方法导入/导出本地断点?

我现在做的是有一个记事本,上面有一些有趣的断点,如下所示。

bp foo!bar;bp foo!barbar; bp foo!barbarbar; .................

我每次都手动运行上面的代码,从记事本复制并粘贴到windbg的命令窗口。

注:有没有办法告诉windbg直接运行记事本文件?而不是复制和粘贴?

谢谢,

如果您想保存断点,但不想使用工作空间和重用断点

do this

.logopen break.txt;.bpcmds;.logclose

然后当你想重新应用

简单地做$<break.txt

样品

0:000> bl
0:000> bp calc!WinMain
0:000> bp calc!atanhrat
0:000> bu ntdll!ZwCreateIoCompletion ".echo foo"
0:000> bu ntdll!ZwCreateIoCompletion ".echo foo;gc"
breakpoint 2 redefined
0:000> bp calc!xorrat
0:000> g
Breakpoint 0 hit
calc!WinMain:
01001f51 b8ee280101      mov     eax,offset calc!terminate+0x6 (010128ee)
0:000> .logopen break.txt
Opened log file 'break.txt'
0:000> .bpcmds
bp0 0x01001f51 ;
bp1 0x0101090e ;
bu2 ntdll!ZwCreateIoCompletion ".echo foo;gc";
bp3 0x0100c474 ;
0:000> .logclose
Closing open log file break.txt
0:000> .restart
ntdll!DbgBreakPoint:
7c90120e cc              int     3
0:000> bl  <<<<<<<<<<<<<<<<<---------------- no breakpoints in new calc.exe 
0:000> $<break.txt
0:000> Opened log file 'break.txt'
        ^ Syntax error in 'Opened log file 'break.txt''
0:000> 0:000> .bpcmds
       ^ Syntax error in '0:000> .bpcmds'
0:000> bp0 0x01001f51 ;
0:000> bp1 0x0101090e ;
0:000> bu2 ntdll!ZwCreateIoCompletion ".echo foo;gc";
0:000> bp3 0x0100c474 ;
0:000> 0:000> .logclose
       ^ Syntax error in '0:000> .logclose'
0:000> bl  <<<<<<<<<<<<<<<<<--------------------------- all old bps restored
 0 e 01001f51     0001 (0001)  0:**** calc!WinMain
 1 e 0101090e     0001 (0001)  0:**** calc!atanhrat
 2 e 7c90d0be     0001 (0001)  0:**** ntdll!NtCreateIoCompletion ".echo foo;gc"
 3 e 0100c474     0001 (0001)  0:**** calc!xorrat

执行脚本:

$<"myScript.txt"

以上假设您不需要传递参数(更多选项参见末尾的链接)。

如果你想保存你的断点,请注意你可以保存你的工作空间,然后WinDbg会重新加载你当前所有的断点并重新应用它们,除了地址断点,原因很明显。

更多信息在这里和在这里

你也可以用-c启动WinDbg来传递这样的命令:

WinDbg -c "bp foo!bar;bp foo!barbar; bp foo!barbarbar;"

您也可以将它们保存到.cmdtree文件中,参见这里的示例文件和更多信息在blogpost

最新更新