我做好了一个网络考试软件即将投入使用.估计还会存在一些错误,但是别人用时出现自己不好调试,我看有些软件在出错时会提示把一些信息或文件发给软件制作者去调试.
这样的查错误原理是怎样的?能帮我解释一下吗?是不是出错时把所有变量值保存下来?给制作者查找原因?
这样的查错误原理是怎样的?能帮我解释一下吗?是不是出错时把所有变量值保存下来?给制作者查找原因?
解决方案 »
- vb保存数据到excel时,总是提示“是否保存对book1的更改”,小弟好几天都没想明白,跪求高手帮忙解决,感激不尽
- *请教VB高手: 我用VC写了个dll给VB的网络程序调用, 拖动窗口会阻塞网络, 请问VB怎么处理这种问题?
- 怎样才能获取word的艺术字
- 请问QQ空间刷人气工具原理?
- vb MBI窗体加载子窗体的问题,麻烦高手帮忙解决下!谢谢!
- 请问谁了解Word中的Mail Merge 。。在VB程序中又如何调用Mail Merge文档呢??
- 【网络收音机】刚刚写好的,欢迎大家下载试用,多提意见!谢谢!
- 关于winsock发送的问题
- 在窗体中添加背景图后,相关控件的显示问题
- 怎样限制数据类型为double的数的输出位数?
- VB 钩子程序例子
- vb webbrowser里点击超链接???
on error goto "写日志部分"其实一般的做法是在进入函数的退出函数的时候都记录一下函数的参数值,执行状态;当然了,检测到错误的时候也要记录.频繁的文件操作对执行效率是会有一定影响的,可以设置个日志开关,比如做个命令行参数,用户使用的时候默认不要开启,出问题调试的时候你再用相应的命令行来启动调试;如果程序运行时的信息比较敏感,怕记录的信息被别有用心的人拿到,可以将信息加密后再记录到日志文件.这种手段检测到的错误都是比较上层的,通常是一般的程序逻辑错误,字符串处理,数组操作,文件不存在等等这些常见的问题,这类错误一旦定位到问题源,解决好也就是十几分钟的事情了.纯VB写的程序错误基本上可以这样解决;
如果错误是由调用系统API或自己写的DLL引起的,会麻烦些,通常程序会很不留情的直接抛出个'应用程序错误'的错误窗口给你,然后直接罢工,这种问题比较棘手,你的日志模块可能还没来得及执行,查看自己的日志来排错显得很被动了.
这时候可以使用windows自带的调试工具,dr.wasten32(华医生),该工具会记录程序出错时的内存信息,也就是我们常说的dum文件,可以用windebug调试dum文件模拟运行到程序最后出错时的环境,这步需要比较强的汇编功底,不过vb运行库里面的函数名和我们在IDE里面看到的是差不多的,运气好的话,立刻能定位错误源.否则只能硬头皮排查代码了.
windows系统本身提供日志信息服务功能,就是我们使用软件时常见到的错误对话框,目前一些大型的应用软件都已经运用进去了,如QQ,如迅雷,支持在线发送出错信息到设定的日志服务器.
可以参考msdn的windows error report说明
以上我是做项目时用过的调试手段,方法好坏见仁见智,软件排错是件很麻烦的事情,未雨绸缪相当重要,希望对你有帮助
on error goto ErrHandle msgbox 0/1 exit sub
ErrHandle:
call addlog("test( " & Date & "/" & Time & " ): " & Err.Description)
resume next '这里是否返回要看你代码的情况.
end subsub AddLog(byval LogStr as string)
dim lFile as long lfile=freefile
logstr=vbcrlf & logstr
open lfile for binary as #lfile
put #lfile,lof(lfile),logstr
close #lfile
msgbox "软件出现错误,请将XXXX文件发送致[email protected]"
end sub
对于内存读写类的错误,使用SEH技术拦截下来,则一样可以调用addlog过程进行记录:http://topic.csdn.net/u/20090714/04/6c925475-9b01-402e-83aa-24846bed0b24.html也可以如楼上所说使用系统的日志机制.