VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 6420|回复: 9

[讨论] 讨论一个猎奇的问题,高手、新手都来看看。如何判断一个程序假死?

[复制链接]
 楼主| 发表于 2010-12-20 06:46:36 | 显示全部楼层 |阅读模式
本帖最后由 hackerrose 于 2010-12-20 06:48 编辑

某个程序由于各种不确定因素经常崩溃出错。

出错症状如下:
1.出错直接进程消失,无任何提示。
2.弹出错误框“xx错误、xx内存不能为read”之类的不确定内容窗口。
3.进程还在,但是程序什么反应都没有,已假死。。
4.各种猎奇的错误……

现在要做的是:

循环监视该程序,当此程序出现以上症状的时候,执行一些操作,例如:重启该程序之类的。

目前讨论如何判断该程序出现了以上症状?

第一种很简单,循环判断该程序进程还在没。

第二种可以遍历查找错误窗口,但是这个内容非固定的,是个问题。。。

如果第三种,弹出错误框后,程序挂起,占用内存大小、CPU应该固定了不变了,可以通过这个判断?如果一段时间内,占用内存和CPU都没有变化,即判定已假死。

但这个存在误判的问题,如果程序处于空闲状态,一段时间内占用内存和CPU也是不变化的。

这是个问题…… 各位有没有什么好方法?

第四种未知。。。。
发表于 2010-12-20 13:28:21 | 显示全部楼层
用管道通讯
回复 支持 反对

使用道具 举报

发表于 2010-12-20 15:38:20 | 显示全部楼层
3好像有一个API:

IsHungAppWindow

--------------------------------------------------------------------------------
判断一个进程出错或未响应。

原形:

Declare Function IsHungAppWindow Lib "user32.dll" (ByVal hWnd As Long) As Long


返回0代表无效句柄或没问题,返回1代表无响应.
回复 支持 反对

使用道具 举报

发表于 2010-12-20 16:27:41 | 显示全部楼层
还使用管道通讯最好
回复 支持 反对

使用道具 举报

发表于 2010-12-20 17:29:20 | 显示全部楼层
第二个问题  用OD调试器载入(有时候OD不太好用,用WinDbg)
回复 支持 反对

使用道具 举报

发表于 2010-12-20 22:53:10 | 显示全部楼层
4# sunfrank

另一个程序不是自己写的就没办法了……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-12-21 00:26:04 | 显示全部楼层
4# sunfrank

这另一个程序是不可改变的,另外的人写的。

是一个游戏的服务器端。
回复 支持 反对

使用道具 举报

发表于 2010-12-21 10:54:03 | 显示全部楼层
第二条可以在系统设置里面取消掉这个窗口,让程序错误了就直接退出……这样就变成问题1了……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-12-22 00:00:52 | 显示全部楼层
本帖最后由 hackerrose 于 2010-12-22 00:02 编辑

8# acme_pjz


昨天无意间想到一个办法,可以解决以上所有情况。

这个程序不可改变,没错。但是我们可以注入一个dll进去,独立运行。

每隔一段时间跟守护程序进行油槽通讯或其他方式的本地通讯。

守护程序在指定时间内没收到指定信息,便判定程序已假死。

然后执行相应的重启操作。


目前不知道程序假死后,注入的dll线程还运行着没(等会儿试验下)。。。

还有就是不知道对目标程序稳定性会造成影响不。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-12-22 04:50:44 | 显示全部楼层
本帖最后由 hackerrose 于 2010-12-22 05:01 编辑

我擦,程序崩溃后,子线程居然还在运行,完全不影响。除非进程完全退出了。。。

另外弱弱的问一下,如何模拟“xx内存不能为read错误”?

就是按个按钮后,出现这个错误(不是对话框模拟)。

用来调试注入的dll在这种情况下的反映、、

PS:
刚才翻论坛帖子翻到了:

一、错误报告:在“系统属性”->“高级”->“错误报告”->“禁用错误汇报,发生错误时不要通知我”才能看到“内存不能read”,要不然只能看到“遇到问题需要关闭”。

二、如何让VB出现内存不能为read:
http://www.vbgood.com/thread-79352-1-1.html
http://www.vbgood.com/viewthread.php?tid=73436

都是楼上前辈的帖子。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2021-4-15 10:59

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表