分享

TNTGina - 你用VC调试程序时经常死机吗

 Delores 2007-12-10
如果是,而且又不想忍受漫长的注销过程,试试看这个 Gina 吧——TNTGina——用于 Terminate MSVC 的 NTGina。
  • 缘起:
    VC 在调试多线程程序(GraphEdit 调试 DShow Filter 时,基本上都是)的时候经常死机,特别是在 Windows XP 中。
    此时按 Ctrl+Alt+Del 有效,但唤出任务管理器后,却无法操作。只好作注销或重启处理:(
  • 注册:
    保存到系统登录时能访问到的路径上,用 RegSvr32.exe TNTGina.dll 注册它。重新启动系统后才能生效。
    (这不是一个COM组件,只不过为了注册和注销方便,导出了两个函数,里面其实只是写了注册表的一个键值,改写了GinaDLL的路径)。
  • 注销:
    RegSvr32.exe /u TNTGina.dll
  • 用法:
    注册这个 Gina 后,问题就接解决了——虽然不能从根本上解决问题——不能防止VC死掉——但却可以:
    按亮 ScrollLock,然后按 Ctrl+Alt+Del,MSVC 马上被终止掉,系统恢复用户界面响应。重新打开VC调试吧……
  • 原理:
    这是一个 Gina DLL,Gina 是负责处理系统登录等用户界面操作的DLL,且 MS 允许用户重写它。
    于是我写了这个 DLL,处理了 SrcollLock 高亮状态下的 Ctrl+Alt+Del 安全事件,并强制终止 MSVC 进程。
    对于其它情况处理,则转交给原来的 MSGina.dll。
  • 后话:
    这个 DLL 是使用 AheadLib 自动生成的,然后添加了一点操作代码。
  • 下载:
    TNTGina (包括代码)

代码 | 评论(8) | 引用(0) | 阅读(13438)
wsjws
2007/11/10 21:29
和aling 描述的一样,VC2008一样会有mspdbsrv.exe的问题。在我的机器上就是如果不把mspdbsrv.exe进程终止的话,一定会假死......晕死
aling
2007/07/09 22:59
谢谢,对vc2005也有用。不过有时mspdbsrv.exe这个进程如果上次调试时没有把它结束的话,再次重运行vc2005有时会第一次就假死。而一般情况下vc2005第一次debug多线程程序时还算正常,如果没有退出vc2005,而且也没有新build的话,再次调试,就一定会假死,感觉这个问题也太恶心了,都2005(vc8)了阿。
周翀 Email
2007/03/28 09:07
nicechao,vmware很多问题解决不了的,呵呵。你在那上面调试一般程序可以,但是调用使用串口的、通用串口的就都不好使。而且那上面速度毕竟比较慢。

但最关键的是无法调试要用到通用串口的程序,或者你知道如何设置vmware使得能够使用通用串口?我反正没找到方法呵呵。
周翀 Email
2007/03/28 09:03
嗯,调试了5年VC程序了,从6到2003,这个问题一直存在且太折磨人了。

呵呵。也早就发现这其实是个假死,我感觉应该是GUI系统卡住了。却一直没有想起编这样一个程序来辅助结束devenv.exe。谢谢你了。

不知道微软自己怎么想这个问题?我就奇怪怎么这么长时间,一点官方说法都没有??不知道2005里是不是能够修正这个问题了。

我记得当初用VC6时,好像是装了SP4后就好了?不过那是N年前的事了,也可能是我记错了。
nicechao
2007/01/29 15:12
用vmware装个系统,用VC的远程调试则完全无此问题
sunss Email
2006/11/28 16:56
jq你的办法我试过了,挺好用的,但是解决不了根本问题,可以如下解决:在建立线程的那行代码前设置断点,当要执行该线程时,马上F5。
jq Homepage
2006/10/25 15:27
看来是VC的调方式器有问题?
根据我的经验,是在断点处不能切换到主界面。
可以点中止调试(Shift F5),大约1分钟会恢复主界面。
不点中止调试好象一直处于假死状态。
不知为什么调方式器会造成整个系统的假死?
Yonsm 回复于 2006/11/28 21:22
是VC Debugger的问题
路过
2006/03/15 15:38
自己写个程序监视全局快捷键就好了,没这么复杂,还弄个com。。。
Yonsm 回复于 2006/03/15 19:28
扯的,……此时系统停止对除Ctrl+Alt+Del之外的其它响应了……
另外,这不是COM,只是我道出了两个函数用来注册和注销Gina

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多