如何除錯裝置驅動程式

2021-09-05 14:23:18 字數 1605 閱讀 8484

使用 platform builder,可以在驅動程式開發過程中的任意時刻除錯裝置驅動程式。驅動程式除錯是開發用於 windows ce 的驅動程式的更大過程的一部分。有關開發驅動程式的詳細資訊,請參閱如何建立裝置驅動程式。

platform builder 提供了用於除錯驅動程式的工具,例如,核心偵錯程式和擴充套件除錯介面 (exdi) 硬體輔助除錯。

驅動程式是可重入的。在除錯過程中,任何開啟驅動程式控制程式碼的執行緒都可以隨時發出 i/o 請求。

硬體和軟體假設

驅動程式公開流介面。有關流介面驅動程式的詳細資訊,請參閱流介面驅動程式開發概念。

要在下表中跟蹤您的進度,請選中對應於每個步驟的核取方塊。

步驟主題

1. 如果適用,請在 dllmain 或驅動程式的 dllentry 入口點中設定斷點。

可能需要重新啟動目標裝置並載入驅動程式以確認驅動程式執行到斷點。

在源**行設定斷點

2. 如果要驗證驅動程式正確載入,請執行偵錯程式直到到達設定的斷點。

如果偵錯程式不在斷點停止,則驅動程式未正確載入。有關對驅動程式的載入進行疑難解答的資訊,請參閱 疑難解答:載入驅動程式。

執行偵錯程式直到到達斷點

3. 在驅動程式的 ***_init (device manager) 入口點中設定斷點,並且逐句通過驅動程式的初始化。

在源**行設定斷點

4. 要驗證已經正確地初始化了驅動程式,請再次執行偵錯程式。

通過執行該步驟,可以確認裝置管理器識別了驅動程式並且初始化過程正確工作。

執行偵錯程式直到到達斷點

5. 在驅動程式的流介面函式的入口點中設定斷點。

以下列表顯示了驅動程式可以實現的流介面函式:

•***_close (device manager)

•***_deinit (device manager)

•***_iocontrol (device manager)

•***_open (device manager)

•***_read (device manager)

•***_seek (device manager)

•***_write (device manager)

裝置管理器使用***字首。

在實現流介面時,請用適合於您的特定實現的字首替換***,或者將未修飾的入口點名稱與 devflags_nakedentries 一起使用。

有關詳細資訊,請參閱流介面驅動程式實現。

在源**行設定斷點

6. 要驗證驅動程式在到達各種斷點時能夠正常工作,請再次執行偵錯程式。

有關對驅動程式進行疑難解答的詳細資訊,請參閱疑難解答:除錯驅動程式。

通過執行該步驟,可以了解應用程式如何與驅動程式互動。

執行偵錯程式直到到達斷點

7. 要驗證中斷服務執行緒 (ist) 正常工作,請在驅動程式的 ist 中設定斷點,並且乙個接乙個地逐步通過每個中斷。

在源**行設定斷點

8. 要驗證驅動程式的 ist 正常工作,請再次執行偵錯程式。

有關 ist 的行為的詳細資訊,請參閱中斷服務執行緒。

如果可以逐步通過每個斷點,並且驅動程式正常工作,則您已經成功除錯了驅動程式。

除錯裝置驅動程式

linux核心沒有整合對偵錯程式的支援。指令級的kdb kernel debudgger 核心偵錯程式 源 級偵錯程式kgdb kernel gnu debugger 核心gnu偵錯程式 udev 工作 1.核心中的sysfs支援,sysfs是linux裝置模型的重要組成部分。位於記憶體中,在啟動時...

linux裝置驅動程式除錯

一 寫linux裝置驅動程式最難的地方就是沒有強大的除錯工具,一般間接或者直接的除錯手段 1.利用printk 2.檢視oop訊息 3.利用strace 4.利用核心內建的hacking選項 5.利用ioctl方法 6.利用 proc檔案系統 7.使用kgdb 8.使用systemtap 二 1,利...

Linux裝置驅動程式 驅動除錯printk

前一段時間學了一下,printk 列印語句,現在用起來又忘了,看了一下前一段時間做的筆記,不是很詳細,所以決定再寫一下和printk相關的除錯的東西。算是複習一下吧。首先,先熟悉一下printk函式,這個函式和printf函式很類似。只不過乙個執行在使用者態,乙個執行在核心態。此外還是要熟悉一下終端...