Windbg内核调试之一: Vista Boot Config设置
生活随笔
收集整理的這篇文章主要介紹了
Windbg内核调试之一: Vista Boot Config设置
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Windbg進(jìn)行內(nèi)核調(diào)試,需要一些基本的技巧和設(shè)置,在這個系列文章中,我將使用Windbg過程中所遇到的一些問題和經(jīng)驗記錄下來,算是對Kernel調(diào)試的一個總結(jié),同時也是學(xué)習(xí)Windows系統(tǒng)內(nèi)核的另一種過程。
很多人說Windbg不如SoftIce好用, 但是我使用過程中還是覺得Windbg能更好的反映系統(tǒng)狀態(tài), 而且相比SoftIce, Windbg更穩(wěn)定(雖然它的部分操作略顯復(fù)雜), 下面介紹Windbg的Kernel模式調(diào)試第一部分: 雙機(jī)連接設(shè)置.
Vista和XP不同, 沒有boot.ini文件, 需要用bcdedit進(jìn)行啟動設(shè)置。(關(guān)于啟動數(shù)據(jù)配置編輯器BCD的具體設(shè)置, 參見另一篇文章: (From MS)Vista: 啟動配置數(shù)據(jù)編輯器(BCD))
在administrator權(quán)限下, 進(jìn)入command line模式,? 鍵入bcdedit命令, 會出現(xiàn)以下界面:
??
然后, 設(shè)置端口COM1, baudrate為115200 (除COM1外, 也可以用1394或USB. 1394用起來比COM口快多了, 當(dāng)然前提是你需要有1394卡及其驅(qū)動. 很惡心的是Vista不再支持1394的文件傳輸協(xié)議, 但是用windbg雙機(jī)調(diào)試還是可以的)
命令為:
bcdedit?/dbgsettings?{serial?[baudrate:value][debugport:value]?| 1394?[channel:value]?|?usb?}
?
接著, 我們需要復(fù)制一個開機(jī)選項, 以進(jìn)入OS的debug模式
命令為:
bcdedit?/copy?{current}?/d?DebugPoint
DebugPoint為選項名稱, 名字可以自己定義. 然后復(fù)制得到的ID號.?
?
接著增加一個新的選項到引導(dǎo)菜單
bcdedit?/displayorder?{current}?{ID}
這里的{ID}的ID值是剛生成的ID值.
?
激活DEBUG : bcdedit?/debug?{ID}?ON
這里的{ID}?的ID值還是剛才的ID值.
?
命令執(zhí)行成功后, 重新啟動機(jī)器.
選擇DebugPoint登錄,開啟Windbg
連接成功, 則顯示如下:
Microsoft?(R)?Windows?Debugger??Version?6.6.0007.5
Copyright?(c)?Microsoft?Corporation.?All?rights?reserved.
Opened?\\.\pipe\com_1
Waiting?to?reconnect...
Connected?to?Windows?Vista?6000?x86?compatible?target,?ptr64?FALSE
Kernel?Debugger?connection?established.
Symbol?search?path?is:?symsrv*symsrv.dll*F:\symbols*http://msdl.microsoft.com/download/symbols
Executable?search?path?is:?
Windows?Vista?Kernel?Version?6000?MP?(1?procs)?Free?x86?compatible
Built?by:?6000.16386.x86fre.vista_rtm.061101-2205
Kernel?base?=?0x81800000?PsLoadedModuleList?=?0x81911db0
System?Uptime:?not?available
Break?instruction?exception?-?code?80000003?(first?chance)
*******************************************************************************
*?????????????????????????????????????????????????????????????????????????????
*???You?are?seeing?this?message?because?you?pressed?either????????????????????
*???????CTRL+C?(if?you?run?kd.exe)?or,????????????????????????????????????????
*???????CTRL+BREAK?(if?you?run?WinDBG),???????????????????????????????????????
*???on?your?debugger?machine's?keyboard.??????????????????????????????????????
*?????????????????????????????????????????????????????????????????????????????
*???????????????????THIS?IS?NOT?A?BUG?OR?A?SYSTEM?CRASH???????????????????????
*?????????????????????????????????????????????????????????????????????????????
*?If?you?did?not?intend?to?break?into?the?debugger,?press?the?"g"?key,?then???
*?press?the?"Enter"?key?now.??This?message?might?immediately?reappear.??If?it?
*?does,?press?"g"?and?"Enter"?again.??????????????????????????????????????????
*?????????????????????????????????????????????????????????????????????????????
*******************************************************************************
nt!RtlpBreakWithStatusInstruction:
81881760?cc??????????????int?????3
總結(jié): 雖然利用VMware虛擬機(jī)能更方便的設(shè)置雙機(jī)的調(diào)試環(huán)境, 而且這種模擬環(huán)境也是大多數(shù)人使用的(方便), 但是如果有雙機(jī)條件的話,? 還是希望大家能夠使用兩臺機(jī)器, 因為用虛擬機(jī)進(jìn)行Kernel調(diào)試, 真不是一般的慢! 基本就等于死機(jī). 即時你的主機(jī)內(nèi)存2G, 分給VMware1G, 還是會相當(dāng)卡(Kerenl模式與User模式不同).
很多人說Windbg不如SoftIce好用, 但是我使用過程中還是覺得Windbg能更好的反映系統(tǒng)狀態(tài), 而且相比SoftIce, Windbg更穩(wěn)定(雖然它的部分操作略顯復(fù)雜), 下面介紹Windbg的Kernel模式調(diào)試第一部分: 雙機(jī)連接設(shè)置.
Vista和XP不同, 沒有boot.ini文件, 需要用bcdedit進(jìn)行啟動設(shè)置。(關(guān)于啟動數(shù)據(jù)配置編輯器BCD的具體設(shè)置, 參見另一篇文章: (From MS)Vista: 啟動配置數(shù)據(jù)編輯器(BCD))
在administrator權(quán)限下, 進(jìn)入command line模式,? 鍵入bcdedit命令, 會出現(xiàn)以下界面:
??
然后, 設(shè)置端口COM1, baudrate為115200 (除COM1外, 也可以用1394或USB. 1394用起來比COM口快多了, 當(dāng)然前提是你需要有1394卡及其驅(qū)動. 很惡心的是Vista不再支持1394的文件傳輸協(xié)議, 但是用windbg雙機(jī)調(diào)試還是可以的)
命令為:
bcdedit?/dbgsettings?{serial?[baudrate:value][debugport:value]?| 1394?[channel:value]?|?usb?}
?
接著, 我們需要復(fù)制一個開機(jī)選項, 以進(jìn)入OS的debug模式
命令為:
bcdedit?/copy?{current}?/d?DebugPoint
DebugPoint為選項名稱, 名字可以自己定義. 然后復(fù)制得到的ID號.?
?
接著增加一個新的選項到引導(dǎo)菜單
bcdedit?/displayorder?{current}?{ID}
這里的{ID}的ID值是剛生成的ID值.
?
激活DEBUG : bcdedit?/debug?{ID}?ON
這里的{ID}?的ID值還是剛才的ID值.
?
命令執(zhí)行成功后, 重新啟動機(jī)器.
選擇DebugPoint登錄,開啟Windbg
連接成功, 則顯示如下:
Microsoft?(R)?Windows?Debugger??Version?6.6.0007.5
Copyright?(c)?Microsoft?Corporation.?All?rights?reserved.
Opened?\\.\pipe\com_1
Waiting?to?reconnect...
Connected?to?Windows?Vista?6000?x86?compatible?target,?ptr64?FALSE
Kernel?Debugger?connection?established.
Symbol?search?path?is:?symsrv*symsrv.dll*F:\symbols*http://msdl.microsoft.com/download/symbols
Executable?search?path?is:?
Windows?Vista?Kernel?Version?6000?MP?(1?procs)?Free?x86?compatible
Built?by:?6000.16386.x86fre.vista_rtm.061101-2205
Kernel?base?=?0x81800000?PsLoadedModuleList?=?0x81911db0
System?Uptime:?not?available
Break?instruction?exception?-?code?80000003?(first?chance)
*******************************************************************************
*?????????????????????????????????????????????????????????????????????????????
*???You?are?seeing?this?message?because?you?pressed?either????????????????????
*???????CTRL+C?(if?you?run?kd.exe)?or,????????????????????????????????????????
*???????CTRL+BREAK?(if?you?run?WinDBG),???????????????????????????????????????
*???on?your?debugger?machine's?keyboard.??????????????????????????????????????
*?????????????????????????????????????????????????????????????????????????????
*???????????????????THIS?IS?NOT?A?BUG?OR?A?SYSTEM?CRASH???????????????????????
*?????????????????????????????????????????????????????????????????????????????
*?If?you?did?not?intend?to?break?into?the?debugger,?press?the?"g"?key,?then???
*?press?the?"Enter"?key?now.??This?message?might?immediately?reappear.??If?it?
*?does,?press?"g"?and?"Enter"?again.??????????????????????????????????????????
*?????????????????????????????????????????????????????????????????????????????
*******************************************************************************
nt!RtlpBreakWithStatusInstruction:
81881760?cc??????????????int?????3
總結(jié): 雖然利用VMware虛擬機(jī)能更方便的設(shè)置雙機(jī)的調(diào)試環(huán)境, 而且這種模擬環(huán)境也是大多數(shù)人使用的(方便), 但是如果有雙機(jī)條件的話,? 還是希望大家能夠使用兩臺機(jī)器, 因為用虛擬機(jī)進(jìn)行Kernel調(diào)試, 真不是一般的慢! 基本就等于死機(jī). 即時你的主機(jī)內(nèi)存2G, 分給VMware1G, 還是會相當(dāng)卡(Kerenl模式與User模式不同).
總結(jié)
以上是生活随笔為你收集整理的Windbg内核调试之一: Vista Boot Config设置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redux vs Mobx系列(-):i
- 下一篇: ReactNative学习笔记(一)环境