VB程序突然自动关闭

PERFECTLXY 2007-12-20 09:18:16
我用VB做了一个产品测试程序,在测试过程中常会突然关闭,不是每次都会,也不是在同一地方,搞不懂为什么会这样,咋处理,如何去排除错误。
多谢各位,提示有效均有分数。
...全文
729 点赞 收藏 22
写回复
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
PERFECTLXY 2008-01-17
可能没有问题了,好久没有发现莫名其妙的死机了,OK,谢谢各位,发年终奖了
回复
chuting1 2008-01-14
只有跟踪调试了
回复
每个过程都加上LOG记录,运行一段时间等程序崩溃后看LOG记录到哪个模块再拿出来仔细研究吧
回复
麦壳饼 2008-01-13
windows 本来就是个让人和诧异的东西。 尤其使用api等一些东西的时候,用不好, 就死。
回复
w3k 2008-01-13
Time本身未处理完毕
占内存空间没有完全释放……
卸载完先把TIME终止了
?头发
回复
bbs9898 2008-01-07
像这样的问题,一般都是由于程序没有释放资源造成的,程序在运行一段时间以后。使得资源耗尽。解决的办法可以采用多线程或者是在函数执行完毕后及时的释放资源。
回复
PERFECTLXY 2008-01-04
多谢各位位帮忙,好像没什么问题了。
1.程序很长,大家也不会全看的,没有贴上来,还要程序需要外部设备配合才能正常运行,只是问下有哪些可能会出错
2.我把mscomm控件的使能严格定义了一下,不工作就关闭,然后EXE文件运行过几个小时,约200+多次,没有出问题]
3.有用API访问网页,不过主程序里面没有运行此功能
回复
东方之珠 2008-01-03
若是程序崩溃,突然关闭,应如何?
回复
zdingyun 2008-01-03
9楼的方法可以一试,在开发环境下,报错会有提示。
回复
zdingyun 2008-01-03
串口通信受现场电磁干扰的错误,引起VB程序处于某种不确定的错误而无法捕获.我在3楼处的代码就是针对此情况作出的处理.理由是WINDOWS系统当机而程序无法执行时,就是强行退出该线程.
回复
guyehanxinlei 2008-01-03
此类问题与环境关系很大也确实难以找出,果真不行只有加异常处理语句了。
有一款小插件类似于“VB老鸟”说的MZ-Tools可以方便的添加错误处理语句等。名称是VBFriend,楼主可以试着找一下。
回复
VBAdvisor 2008-01-03
把你的程序贴出来,大家才能帮助你。如果没有Sunclass/Hook,一般很少有你的状况。
回复
bjwanghui 2008-01-03
有没有使用api??

正常情况下,如果没有调用api 的情况下这种情况还真的不多见。。

vb的listview控件列双击调整列宽的时候比较不问题,别的我还真的没有过这种棘手的问题。
回复
china_bai 2008-01-02
可以试试不以.exe的方式执行,直接在开发环境下运行,看看能不能在出错的时候获得错误提示信息。
回复
Tiger_Zhao 2008-01-02
安装一个VB的Add-in叫MZ-Tools,它的工具条上有个按钮就是用来加错误处理过程的。
在选项中将模板做的好一点,几百个函数的错误处理过程还不算累。
回复
PERFECTLXY 2008-01-02
问题好像没那么简单,在主程式里面加on error根本没有执行就关闭了,有控件的过程都加了,还是抓不到那只臭虫,本来出现的机率就小,高手们有什么好法子吗
回复
PERFECTLXY 2007-12-24
一般的过程不会出错吧,也只有控件有出错的可能,timer与mscomm我去检测一下,mscomm我是放主窗体,读写都在类中,多个窗体不同时调用mscomm与timer,可能会出错吗
回复
东方之珠 2007-12-22
说对了,就是在每个过程前面加上:on error goto handle_error或者on error resume next。有的错误可以捕获,但有的错误难以捕获,就只有采取这个办法了。
回复
xr105 2007-12-22
--写程序错误处理是必要的.
Private Sub Timer1_Timer()
on error goto ErrH:
If lbltime.Caption <> CStr(Time) Then
FrmRun.Caption = "运行图" & Space(100) & Date$ & Space(6) & Time$
frmMain.Caption = "串口接收发送" & Space(60) & Date$ & Space(6) & Time$ '在内存中加载通信窗体
miao = Right$(Time$, 2)
fen = Right$(Left$(Time$, 5), 2)
mmm = Val(fen * 60) + Val(miao) '每小时卸载加载frmMdb
If miao = "15" Or miao = "45" Then
Unload frmMain '卸载通信窗体
End If
End If
exit sub
ErrH:
err.clear
exit sub
End If
回复
zdingyun 2007-12-21
你那种状况,我在工控机中也碰到过。整个程序代码未见错误。采用通信模块放独立窗体,通过全局变量传递数据,在主窗体使用TIMER控件定时UNLOAD通信窗体,然后即刻加载。程序可长时间运行不出错。
Private Sub Timer1_Timer()
If lbltime.Caption <> CStr(Time) Then
FrmRun.Caption = "运行图" & Space(100) & Date$ & Space(6) & Time$
frmMain.Caption = "串口接收发送" & Space(60) & Date$ & Space(6) & Time$ '在内存中加载通信窗体
miao = Right$(Time$, 2)
fen = Right$(Left$(Time$, 5), 2)
mmm = Val(fen * 60) + Val(miao) '每小时卸载加载frmMdb
If miao = "15" Or miao = "45" Then
Unload frmMain '卸载通信窗体
End If
End If
End If
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7453

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告