使用PowerDbg自动化Windbg调试过程
PowerDbg是一個PowerShell腳本,使用這個腳本可以連接到windbg上面,遠程控制windbg,可以通過編程的方式分析windbg輸出;加之PowerDbg強大的編程能力,方便我們編寫一些強大的調(diào)試腳本。
使用方法比較簡單,從http://www.codeplex.com/?下載powerdbg,這是一個開源的程序—實際上下載下來的就是一個可以執(zhí)行PowerShell腳本。
PowerDbg的工作原理是,在Windbg里設(shè)置一個遠程調(diào)試服務(wù)器,啟動另一個調(diào)試器—通常是命令行的調(diào)試器(例如cdb.exe)作為客戶端。然后PowerDbg使用進程重定向的功能將調(diào)試命令輸入到cdb.exe,再由cdb.exe再輸入到windbg遠程調(diào)試服務(wù)器上遠程執(zhí)行。接著將windbg的命令重定向到PowerShell腳本,當然啦輸出結(jié)果會被PowerShell處理以后再顯示出來。
簡單介紹一下用法:
1.???????在Windbg這一邊,打開一個要調(diào)試的程序,接著打開遠程調(diào)試服務(wù)器功能,通過下面這個命令可以做到:
.server tcp:port=12345
?
2.???????將下載下來的PowerDbg源代碼解壓后,把文件夾Module里面的WinDbg拷貝到C:\Windows\System32\WindowsPowerShell\v1.0\Modules\。這里假定你的系統(tǒng)盤是C盤。
?
3.???????啟動PowerShell,需要以管理員的權(quán)限啟動(Vista以上需要以提升后的管理員權(quán)限啟動)。
?
4.???????在PowerShell里輸入(Win 7里,PowerShell在附件菜單下面):
set-executionpolicy unrestricted
?
5.???????接著輸入下面的命令導入PowerDbg模塊
import-module WinDbg
?
6.???????輸入下面的PowerDbg命令連接到遠程Windbg服務(wù)器上(如果你的windbg.exe不是安裝在C:\Debuggers目錄下,那么你需要手工修改一下文件C:\Windows\System32\WindowsPowerShell\v1.0\Modules\WinDbg\WinDbg.psm1里的$cdbPath變量的值):
Connect-Windbg "tcp:Port=12345,Server=機器名"
?
7.???????這下就可以執(zhí)行Windbg命令了,使用Send-PowerDbgCommand來發(fā)送命令(命令的參數(shù)就是你要發(fā)送的命令):
Send-PowerDbgCommand "g"
?
8.???????在Windbg觸發(fā)到斷點以后,你就可以執(zhí)行一些操作,并且讀取格式化過后的輸出了。例如下面兩個命令:
Send-PowerDbgCommand ".loadby sos mscorwks"
Analyze-PowerDbgThreads
下面就是輸出,你可以看到PowerDbg將各個線程的狀態(tài)都用文字的形式描述出來了,而不象原來sos!Threads只是打印一些莫名其妙的數(shù)字:
如果要取消與Windbg的連接,使用下面的命令就可以做到了:
Disconnect-Windbg
總結(jié)
以上是生活随笔為你收集整理的使用PowerDbg自动化Windbg调试过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windbg教程-调试非托管程序的基本命
- 下一篇: OD的命令大全