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