电竞比分网-中国电竞赛事及体育赛事平台

分享

TNTGina - 你用VC調(diào)試程序時經(jīng)常死機(jī)嗎

 Delores 2007-12-10
如果是,而且又不想忍受漫長的注銷過程,試試看這個 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 (包括代碼)

代碼 | 評論(8) | 引用(0) | 閱讀(13438)
wsjws
2007/11/10 21:29
和aling 描述的一樣,VC2008一樣會有mspdbsrv.exe的問題。在我的機(jī)器上就是如果不把mspdbsrv.exe進(jìn)程終止的話,一定會假死......暈死
aling
2007/07/09 22:59
謝謝,對vc2005也有用。不過有時mspdbsrv.exe這個進(jìn)程如果上次調(diào)試時沒有把它結(jié)束的話,再次重運(yùn)行vc2005有時會第一次就假死。而一般情況下vc2005第一次debug多線程程序時還算正常,如果沒有退出vc2005,而且也沒有新build的話,再次調(diào)試,就一定會假死,感覺這個問題也太惡心了,都2005(vc8)了阿。
周翀 Email
2007/03/28 09:07
nicechao,vmware很多問題解決不了的,呵呵。你在那上面調(diào)試一般程序可以,但是調(diào)用使用串口的、通用串口的就都不好使。而且那上面速度畢竟比較慢。

但最關(guān)鍵的是無法調(diào)試要用到通用串口的程序,或者你知道如何設(shè)置vmware使得能夠使用通用串口?我反正沒找到方法呵呵。
周翀 Email
2007/03/28 09:03
嗯,調(diào)試了5年VC程序了,從6到2003,這個問題一直存在且太折磨人了。

呵呵。也早就發(fā)現(xiàn)這其實(shí)是個假死,我感覺應(yīng)該是GUI系統(tǒng)卡住了。卻一直沒有想起編這樣一個程序來輔助結(jié)束devenv.exe。謝謝你了。

不知道微軟自己怎么想這個問題?我就奇怪怎么這么長時間,一點(diǎn)官方說法都沒有??不知道2005里是不是能夠修正這個問題了。

我記得當(dāng)初用VC6時,好像是裝了SP4后就好了?不過那是N年前的事了,也可能是我記錯了。
nicechao
2007/01/29 15:12
用vmware裝個系統(tǒng),用VC的遠(yuǎn)程調(diào)試則完全無此問題
sunss Email
2006/11/28 16:56
jq你的辦法我試過了,挺好用的,但是解決不了根本問題,可以如下解決:在建立線程的那行代碼前設(shè)置斷點(diǎn),當(dāng)要執(zhí)行該線程時,馬上F5。
jq Homepage
2006/10/25 15:27
看來是VC的調(diào)方式器有問題?
根據(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)的假死?
Yonsm 回復(fù)于 2006/11/28 21:22
是VC Debugger的問題
路過
2006/03/15 15:38
自己寫個程序監(jiān)視全局快捷鍵就好了,沒這么復(fù)雜,還弄個com。。。
Yonsm 回復(fù)于 2006/03/15 19:28
扯的,……此時系統(tǒng)停止對除Ctrl+Alt+Del之外的其它響應(yīng)了……
另外,這不是COM,只是我道出了兩個函數(shù)用來注冊和注銷Gina

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多