2015-05-01 148 views
5

我目前在從Windows 8.1 x64主機上執行Windows 7 x64目標的內核調試時出現了一些問題。我在主機上運行帶有WDK 8.1的Visual Studio 2013,並配置了在VMWare中運行的目標機器。Windows Kernel Debbuging:使用WDK 8.1通過虛擬串行端口進行調試

這是我的目標機器配置。它是通過配置從這裏閱讀大多是 - http://www.codeproject.com/Tips/545835/Kernel-Mode-Debugging-in-a-VM-using-Visual-Studio

  • Windows 7的64位
  • 串口COM2與VMWare與名\\。\管道\ COM2。檢查VMWare中的所有適當選項
  • 通過msconfig啓用的OS的調試標誌。調試端口是運行在115200波特的COM2。
  • 我跑測試目標客戶「WDK測試目標設置x64的x64_en-us.exe」本機上供應

我能夠提供的計算機正確計算機之前 - 它創造了WDK刪除用戶帳號。但是,我遇到了一些實際調試的問題。下面是步驟

  1. 啓動在VMWare在Windows 7 64位系統的目標圖像,並等待啓動菜單
  2. 在Visual Studio(主機)上,進入調試 - >附加到進程 - >選擇我的電腦 - >選擇進程「內核」 - >附加
  3. 在VMWare中,按回車啓動Windows
  4. 需要一段時間,但在我的主機上,Visual Studio最終會連接。我可以選擇「全部中斷」並實際使用調試器。

但是,我似乎無法連接到調試器,如果我沒有在引導內核之前做到這一點。我只能附上一次。例如,我不能讓Windows初始化到桌面,然後構建我的驅動程序並開始調試。調試器將始終掛在「等待重新連接...」。如果我開始在內核初始化上進行調試,決定停止調試,然後嘗試重新連接或重新連接,也是如此。它將無限期地掛在「等待重新連接...」上。

+0

你好@xtef_你解決了嗎?我有類似的問題 –

+0

這不正常的行爲,你只能在啓動過程中與內核連接嗎? –

+0

@WouterHuysentruit我不太確定這是否是正常行爲;我在線閱讀了衝突的信息。如果這是正常行爲,那麼這意味着我只能在需要重新啓動計算機之前調試一次驅動程序?因爲目前情況就是這樣。在使用VS 2013和WDK之前,我使用過VisualDDK http://visualddk.sysprogs.org/,並且能夠根據需要多次加載/卸載和調試我的驅動程序。目前,我可以在啓動時附加一次,然後再重新啓動後再重新附加。 –

回答

2

請使用WinDbg進行內核調試。 WinDbg附帶WDK,與使用VS2013相比,它將爲您節省很多麻煩。有關詳細說明,請查看Setting Up Kernel-Mode Debugging of a Virtual Machine Manually。如果您無法使WinDbg正常工作,我可以幫助您,但我已經放棄了使用VS2013進行內核調試。

+0

我在Visual Studio中使用WinDbg作爲內核模式調試器。如果我嘗試從命令行啓動WinDbg,那麼我會遇到同樣的問題 - 我只能在啓動時附加並附加一次,然後才能重新啓動虛擬機。我可以調試,但是從我的閱讀(以及之前使用VisualDDK的經驗)來看,感覺就像我做錯了什麼。我應該能夠多次加載/卸載我的驅動程序並進行調試,無需重新啓動虛擬機,因爲現在過時的VisualDDK插件有多容易。 –

+0

首先,我想說你應該可以隨時連接你的調試器多次。其次,你能否提供更多的信息? (1)您是否在創建命名管道時檢查了「輪詢時的收益CPU」? (2)你能分享你的WinDbg命令嗎?我看起來像這樣'windbg -k「com:port = \\。\ pipe \ com_1,baud = 115200,pipe,reconnect」'。 (3)你能分享你的WinDbg打印嗎? –

相關問題