如果是,而且又不想忍受漫長的注銷過程,試試看這個 Gina 吧——TNTGina——用于 Terminate MSVC 的 NTGina。
- 緣起:
VC 在調(diào)試多線程程序(GraphEdit 調(diào)試 DShow Filter 時,基本上都是)的時候經(jīng)常死機(jī),特別是在 Windows XP 中。
此時按 Ctrl+Alt+Del 有效,但喚出任務(wù)管理器后,卻無法操作。只好作注銷或重啟處理:(
- 注冊:
保存到系統(tǒng)登錄時能訪問到的路徑上,用 RegSvr32.exe TNTGina.dll 注冊它。重新啟動系統(tǒng)后才能生效。
(這不是一個COM組件,只不過為了注冊和注銷方便,導(dǎo)出了兩個函數(shù),里面其實(shí)只是寫了注冊表的一個鍵值,改寫了GinaDLL的路徑)。
- 注銷:
RegSvr32.exe /u TNTGina.dll
- 用法:
注冊這個 Gina 后,問題就接解決了——雖然不能從根本上解決問題——不能防止VC死掉——但卻可以:
按亮 ScrollLock,然后按 Ctrl+Alt+Del,MSVC 馬上被終止掉,系統(tǒng)恢復(fù)用戶界面響應(yīng)。重新打開VC調(diào)試吧……
- 原理:
這是一個 Gina DLL,Gina 是負(fù)責(zé)處理系統(tǒng)登錄等用戶界面操作的DLL,且 MS 允許用戶重寫它。
于是我寫了這個 DLL,處理了 SrcollLock 高亮狀態(tài)下的 Ctrl+Alt+Del 安全事件,并強(qiáng)制終止 MSVC 進(jìn)程。
對于其它情況處理,則轉(zhuǎn)交給原來的 MSGina.dll。
- 后話:
這個 DLL 是使用 AheadLib 自動生成的,然后添加了一點(diǎn)操作代碼。
- 下載:
TNTGina (包括代碼)
但最關(guān)鍵的是無法調(diào)試要用到通用串口的程序,或者你知道如何設(shè)置vmware使得能夠使用通用串口?我反正沒找到方法呵呵。
呵呵。也早就發(fā)現(xiàn)這其實(shí)是個假死,我感覺應(yīng)該是GUI系統(tǒng)卡住了。卻一直沒有想起編這樣一個程序來輔助結(jié)束devenv.exe。謝謝你了。
不知道微軟自己怎么想這個問題?我就奇怪怎么這么長時間,一點(diǎn)官方說法都沒有??不知道2005里是不是能夠修正這個問題了。
我記得當(dāng)初用VC6時,好像是裝了SP4后就好了?不過那是N年前的事了,也可能是我記錯了。
根據(jù)我的經(jīng)驗(yàn),是在斷點(diǎn)處不能切換到主界面。
可以點(diǎn)中止調(diào)試(Shift F5),大約1分鐘會恢復(fù)主界面。
不點(diǎn)中止調(diào)試好象一直處于假死狀態(tài)。
不知為什么調(diào)方式器會造成整個系統(tǒng)的假死?
另外,這不是COM,只是我道出了兩個函數(shù)用來注冊和注銷Gina