驅動編寫與除錯 6

2021-04-17 16:38:35 字數 587 閱讀 9761

(5) 然後跟著我做:首先執行windbg,然後開啟虛擬機器客戶機,選中除錯模式

(6)進入要除錯的系統後我們可以在windbg中用debug命令中的break對目標機進行中斷,用f5我們又可以恢復客戶機的執行。

現在我們來除錯乙個驅動試試,吧剛才寫的驅動和應用檔案拷貝到虛擬客戶機中,在windbg中開啟驅動原始檔如下:

我們先下乙個延遲斷點:bu hook!driverentry 跟普通斷點相比,推遲斷點的特色是把對modules!names的操作延遲到模組載入時進行位址解析,而普通斷點是對位址進行操作,或直接把modules!names轉換為位址。推遲斷點的另乙個特性是系統重啟之後還能記住它們(不是記住的已經轉換的位址)。這個特性使得推遲斷點在模組被解除安裝之後仍然被會記得,而普通斷點就不行了,當模組被解除安裝之後斷點同時會被移除。

延遲斷點可以很方便的使我們的應用程式在特定的位置下斷。

如果我們要下乙個普通斷點可以使用bp命令或者直接在源** 要下斷的地方按f9, 當你想檢視已經設定的斷點時,可以使用bl(「breakpoint line」)命令.下好斷點後我們就可以按f5進行除錯了,具體方法和其他偵錯程式差不多我也就不多羅嗦了。關於windbg命令的詳細描述可以參看幫助文件。

LINUX串列埠驅動(8250)的編寫與除錯

串列埠控制器都是大同小異,用3條位址線就可以完全對串列埠控制器進行控制。針對st554晶元來說,控制暫存器主要有thr 傳送保持暫存器 rhr 接收保持暫存器 ier 中斷使能暫存器 fcr 緩衝控制暫存器 lcr 控制暫存器 lsr 狀態暫存器 mcr 模式控制暫存器 msr 模式狀態暫存器 dl...

NDIS6過濾驅動的編寫

ndis6是在windows vista及之後版本的windows引入的,這時ndis5的hook方式是無法使用的,msdn推薦的方式是使用過濾驅動,其實也可以使用intermediate 中間層驅動 下面談一下它們的利弊,還有一些原理性的東西 1.為什麼ndis6不動ndis5的hook 1.因為...

Windows驅動開發與除錯

配置目標 1.vs2017 windows10.0.16299 wdk驅動開發機 虛擬機器 2.虛擬機器win7 sp1驅動測試機 3.win10實體機windbg除錯win7sp1驅動測試機 實際專業的驅動開發1和3是同一臺實體機,也就是在實體機上編譯和除錯虛擬機器內的驅動,如果驅動更加涉及底層,...