追踨法蘭克

2012年12月26日 星期三

Win debug

Windows Debugger 是微軟的Debug Tool, 它可以用來Debug OS(Run time)的許多問題,例如BSOD、ACPI Debug等等。這篇先介紹如何架設Win debug和如何做ACPI debug與memory dump file 分析。以後的篇幅再介紹實例說明。

架設Debug 環境:

1. 在Host端電腦安裝Windows Debugger Tool, 可以至微軟官方網站下載,以下連結的windows debug可以support到windows 8 版本.

http://msdn.microsoft.com/en-US/windows/hardware/hh852363
2. 安裝USB Cable驅動程式,(Driver需為Microsoft)


3. 確認Target端電腦的OS版本為「checked build」, 才能夠使用windebug來debug, 不然需要置換acpi.sys檔為checked build的版本。free build 的版本是不support的。
4. 在Target端開啟debug port, 開啟方式為執行>msconfig, 開機>進階,勾「偵錯」, port選擇「USB」, 目標名稱可以自己命名。然後重開機。
5. 在Host端電腦開啟Windbug程式,設定symbol檔,File> Symbol File Path...,可以設微軟的symbol伺服器,也可以下載至本機,設本機路徑。
http://msdl.microsoft.com/download/symbols
6. 開啟kernel debug, 檔File>kernel debug, 選擇USB並設定目標名稱。

若顯示Write to USB表示已連結上


注意: 筆者的經驗,目前的Platfrom debug Port有USB Port 1和Port 9,所以Windows debug Cable一定要接在Debug Port上才能做Debug,而msconfig只有USB debug選項,沒有Port1 和Port9選項,經實驗後發現,接在Port 9 的可以直接連上,如果接在Port 1,必須把USB controller 2關掉才能建立連結。

注意:用bcdedit 可以切換USB debug port為 SATA port number


ACPI deubg:

1. 在Host端電腦和Target端電腦已連結上後,先break 系統。




2. reload symbol file, 請下!reload 指令
3. 執行Amli debugger, 請下!amli debugger 指令,然後讓系統繼續執行,下g指令。







4. 此時,只要發生個SCI就能進入AMLI指令列, AMLI ->。如插拔AC、S3等等。
5. 在出現AMLI->之後,我們要設定AMLI的執行模式,一般只要下Set Verboseon和spewon即可,再下g讓系統繼續執行。

此後有跑到ASL code的時候,都能在win debug視窗看到囉!

Amli指令表:















BSOD:

當我們的OS發生藍色畫面時,會產生memory dump file,會存放在C:\windows\minidump 資料夾中,我們可以把這mini memory dump file 複製到有安裝Win debug的電腦中來分析其原因。

1. File>open crash dump...

2. 接下來要先reload symbol.然後再下!analyze -v 指令, 就能分析該dump file 死在哪支Driver,一般會是xxxx.sys

有關analyze指令:

User-Mode
!analyze [-v] [-f | -hang] [-D BucketID] 
!analyze -c [-load KnownIssuesFile | -unload | -help ]
Kernel-Mode
!analyze [-v] [-f | -hang] [-D BucketID] 
!analyze -c [-load KnownIssuesFile | -unload | -help ]
!analyze -show BugCheckCode [BugParameters]

沒有留言:

張貼留言