2011-08-30 98 views
0

剛開始步我的內核模式USB驅動程序,它是在彙編程序。如何將WinDbg配置爲c級調試?這就是我現在的樣子=/WinDbg c級調試?

MyDriver!MyDriver_EvtDeviceAdd+0xb: 
af20801b 833d647020af03 cmp  dword ptr [MyDriver!DebugLevel (af207064)],3 
0: kd> p 
MyDriver!MyDriver_EvtDeviceAdd+0x2e: 
af20803e ff15006020af call dword ptr [MyDriver!_imp__KeGetCurrentIrql (af206000)] 
0: kd> p 
MyDriver!MyDriver_EvtDeviceAdd+0x58: 
af208068 8d95a8feffff lea  edx,[ebp-158h] 
0: kd> p 
MyDriver!MyDriver_EvtDeviceAdd+0x64: 
af208074 c785bcfeffff508420af mov dword ptr [ebp-144h],offset MyDriver!MyDriver_EvtDevicePrepareHardware (af208450) 

回答

0

你需要確保你生成您的驅動程序「CODEVIEW」 /調試符號,生成的文件是WinDBG的訪問。

+0

我使用WDK自己的編譯器和連接器的Windows Vista x86的「檢查建造」,「建設-ceZ」我要補充任何額外的到。我的Windows Vista是一個「免費構建」是一個問題? – user872661

2

WinDbg無法找到pdb文件。正確填寫所有WinDbg的路徑:

  1. 符號搜索路徑 - 必須包括司機.pdb文件和MS調試符號本地路徑。

  2. 源搜索路徑 - 必須包含具有驅動程序源文件的目錄。

  3. 圖像文件路徑 - 必須包含驅動程序.sys文件。

查看WinDbg日誌:它報告嘗試加載調試信息的所有錯誤。如果您看到類似「無法加載your_driver.sys的調試信息」,則說明有問題。

+0

我很確定1和2是好的。但是我必須看到更接近3.明天。我在通過Firewire連接到我的開發人員計算機的目標計算機上運行驅動程序。在目標計算機上,我只有.sys文件(以及安裝信息和一些WDK KMDF協同安裝程序的DLL)。開發人員的計算機有完整的源代碼,生成的符號ets ...)這是一個正確的方法嗎? – user872661

+0

@ user872661 - 目標計算機只能包含運行時:.sys,.inf。調試器計算機必須包含.pdb,符號,源代碼和可執行文件。加載驅動程序時,打開其中一個源文件並嘗試設置斷點。 WindDbg詢問您是否加載調試符號。選擇「是」。這是加載調試符號時的地方,請查看WinDbg日誌 - 它會打印所有加載的驅動程序。 –

+0

好吧,由於我能夠在斷點上斷開,我猜符號文件沒問題。仍然只有彙編代碼,而步進= / – user872661

1

根據上面的輸出,您的符號看起來很好。如果您沒有彈出源窗口,通常會出現以下兩種情況之一:

1)您已將原始源代碼從原來的位置移開。默認情況下,PDB具有到原始源代碼位置的完全限定路徑。如果你移動它,WinDBG將無法找到它。你可以看到WinDbg用作做尋找:

üMyDriver MyDriver_EvtDeviceAdd

這應該給你包含嵌入PDB該函數的源模塊的完整路徑。您可以通過將源搜索路徑設置爲指向新位置來覆蓋此路徑。

2)你已經設法隱藏源窗口莫名其妙。看起來很愚蠢,但發生在我的學生身上:)檢查WinDBG中的「Window」菜單項,看看該窗口是否在某處打開。

要澄清一個較早的觀點,你做而不是在這種情況下需要設置你的圖像文件路徑。唯一需要的時間是如果您正在調試微型轉儲。

斯科特