2013-05-08 47 views
2

有沒有辦法導入/導出原生斷點?Windbg:有沒有辦法導入/導出原生斷點?

我現在所做的是有一個有趣的斷點記事本,如下所示。

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

我每次手動運行上面都是通過將它從記事本複製粘貼到windbg的命令窗口。

P.S.有沒有辦法告訴windbg直接運行記事本文件?而不是複製和粘貼?

感謝,

回答

2

執行腳本做到這一點:

$<"myScript.txt" 

上述假設你不需要通過arguements(更多選擇見鏈接在結束)。

如果您想保存您的斷點,請注意您可以保存您的工作區,然後WinDbg將重新加載當前的所有斷點並重新應用它們,但地址斷點除外,原因很明顯。

更多信息herehere

還可以在啓動的WinDbg與-c通過像這樣的命令:

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

您也可以將它們保存到一個.cmdtree文件,請參閱here爲例文件和更多信息在blogpost

3

如果您想保存斷點但不想使用工作空間並重新使用斷點小號

做到這一點

.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 
相關問題