轉載自 : http://www.cnblogs.com/jiaochen/p/5581440.htmlhtml
雖然不是本身調查的,可是驗證了做者的分析,確實是重啓後能夠繼續使用。windows
dbgview 在windows 10 中關閉後再次打開時沒法「capture kernel」 DbgView 是一個免費的用於抓取log 的工具,能夠捕獲並輸出OutputDebugString()函數的輸出,以及輸出windows driver 中dbgprint 的log,對於windows driver 開發和調試是十分有幫助的。 可是該tool 已經好久再也不更新了,最新的版本是V4.81 版本,是久遠的2012年12月份release 出來的,具體下載連接爲: https://technet.microsoft.com/en-us/sysinternals/debugview.aspx?f=255&MSPPError=-2147217396 目前Dbgview.exe 使用在Windows 10 下,會有一個小問題: 開啓「capture kernel」 後運行一次dbgview後關閉該AP,並再次打開時一般會沒法再「capture kernel」。提示的error 以下圖: 這樣會致使DbgView 沒法"Capture Kernel",除非從新啓動PC。這樣很是不方便。 在研究DbgView與「Dbgv.sys」 時發現有幾個要點: 1. Dbgview.exe 在啓動時,會在該exe中找到對應的resource,而後將這部分生成一個「Dbgv.sys」放在系統目錄下,而後啓動該sys。 2. 啓動成功後就會去delete 該「Dbgv.sys」文件。因此正常在win7 等系統中是沒法看到「Dbgv.sys」這個文件的。 3. 當第二次運行dbgview 時,一樣會提取出「Dbgv.sys」,並重寫以前的文件(若是文件存在的話)。 4. 可是在win 10 中在步驟2總delete 這個文件時會失敗;並且在步驟3中進行重寫時也是失敗的。猜想Windows 10 是禁止重寫已經運行了的sys文件。 5. 在overwrite 失敗後,dbgview 認爲不能正確運行「Dbgv.sys」,因此彈出上文的error message。 6. DbgView 在運行「Dbgv.sys」 時是建立並start 一個service 「DBGVSVC」,可是比較奇怪的是在系統中並沒發現該service。 根據上述的分析,產生一些策略去嘗試避免文中所說的問題: 1. 在再次打開DbgView 前,嘗試找到「DBGVSVC」 service,並stop service 後再運行DbgView,可是沒能找到「DBGVSVC」 Service,該策略未生效; 2. 在再次打開DbgView 前,嘗試去刪除「Dbgv.sys」 文件,而後再運行DbgView,可是該文件未能找到有效的方法成功刪除,該策略未生效; 3. 偶然發現「Dbgv.sys」 居然能夠重命名,重命名該文件後再運行DbgView 就OK了。可是該方法的缺陷是須要重啓後刪除重命名後的文件,不然該文件會一直存在。這個方法對於不想使用我修改後的dbgview 的用戶來講,很是友善。 4. 反編譯DbgView 後,將dbgview 中重寫「Dbgv.sys」 失敗後的代碼改寫,就能夠在windows 10 中繼續像在之前OS 中開心的玩耍了。修改後的FakeDbgView.exe 能夠在https://pan.baidu.com/s/1o8TbqjC 下載。該版本是基於V4.81 版本 版本進行修改。