天天看點

windbg+網線雙機調試核心

    最近要調試bluetooth,涉及到具體硬體是以不能用虛拟機和命名管道調試核心了,另外現在的PC追求輕便化,是以連序列槽都沒了,不得不考慮使用網線調試。網上轉了一圈發現了這篇:基于網絡的核心調試 

    驅動調試需要用到兩台機器,目前主要是通過串\口、usb或者1394接口來連接配接。對于軟裝置驅動來說就多了一種選擇,通過vmware等虛拟化軟體來虛拟測試機。但有些情況下必須在真實的雙機環境進行,如真實裝置驅動的調試,以及其他驅動無法在虛拟機上運作的情況,這時就要考慮用什麼接口來連接配接了。序列槽的優點是它屬于标配,幾乎每個PC主機闆上都有,序列槽線也便宜,另外就是所有的windows系統都支援序列槽調試,是以很多同行都用序列槽進行驅動調試,但它有個缺點速度慢,最快也隻能達到115200。Usb和1394的速度比序列槽速度快,但要找到合适的usb線也不容易,1394就更難了。在這樣的情況下,如果可以通過網絡進行雙機調試一定會是很好的調試體驗。

    很可惜,想要通過網絡進行驅動調試也是有要求的。為了叙述友善我們先明确兩個概念。

    1. 目标機,指的是安裝和運作被調試驅動的機器。

    2. 主控端,運作調試器對目标機進行調試的機器。

    要通過網絡進行驅動調試,需要滿足以下幾個方面的要求:

    1. 目标機和主控端的網卡要支援這種調試。

    2. 目标機作業系統必須是win8或者windows server 2012.

    3. 主控端作業系統可以使XP或者更高版本的系統。

    條件是苛刻了點,但随着win8的普及,相信使用這種方法進行驅動調試的人會越來越多。接下來進入本文的重點,調試環境的配置。

    1. 用ipconfig以及ping指令确定目标機和主控端的IP以及網絡連接配接情況。

    2. 選擇一個主控端和目标機都要用到的網絡端口,你可以在49152-65535這個範圍選擇,確定你選擇的端口沒有被其他程序占用。

    3. 在目标機運作如下指令:

       (1) bcdedit /debug on

       (2) bcdedit /dbgsettings net hostip:w.x.y.z port:n key:1.2.3.4

    其中w.x.y.z表示主控端IP,n表示剛才選擇的網絡端口。(2)這個指令将會産生一個key,把這個key抄下來(按上面的指令,key的值是1.2.3.4),等會要用到。

    如果目标機有多個網卡,還需要執行如下指令:

    bcdedit /set {dbgsettings} busparams b.d.f 

    其中b為總線号,d為裝置号,f為功能号,這些可以在裝置管理器中查到。

   (3) win10上需要開啟測試模式(開啟後,禁用驅動簽名在每次重新開機後依然有效)

     3.1)bcdedit.exe -set TESTSIGNING ON

     3.2)bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS

    4. 重新開機目标機。

    5. 在主控端上打開windbg,選擇kernel debug下的net标簽,填入選擇的端口号和剛才的key,點選OK就可以開啟調試會話。你也可以在指令視窗運作windbg -k net:port=n,key=Key 來開啟調試會話。

=============================================================================================================================

後記:

我測試時發現

1.調試時兩台PC機直連,設定靜态Ip也可以進行調試

2.如果目标機是win10 UEFI啟動模式 網線調試可能會失效,一方面可能是因為受UEFI security boot影響,另一方面可能是因為廠商直接把網口調試功能給禁用了,這種時候隻能裝win10 CSM的鏡像再進行調試

繼續閱讀