当程序崩溃时,大多数的手机只显示“Main程序已关闭”的对话框,并没有对这个错误有更多的描述。这就给我我们带来了麻烦,因为不知道是哪个程序关闭了。
Main问题原理:手机在开机时会自动运行系统程序和设定了开机自动运行的软件(后台线程),如果某个需要运行的文件损坏了或与系统不兼容,那手机就会提示“Main程序已关闭”,然后自动关闭该线程,而且大部分文件出了问题,一般都只是统一显示“Main程序已关闭”,而不会提示是哪个软件,这样就给我们追踪造成错误的源文件造成了麻烦。在S60第一版和第二版上,只要在手机的C:\System\Bootdata文件夹下建立一个空白的文件,并且命名为“ErrRD”。这样下次当系统发生错误的时候,就会提示错误信息以及错误类型和代码。但是在S60 V3的手机上,这个位置不再生效,只能创建在C:/Resource这个文件夹里面,但是由于第三版的安全性,该文件夹是只读属性的,在手机上显然无法创建这个文件。这个时候可以下载“ErrRD.sisx“(用PKG写的,下面有下载地址)。安装完成后重启机器,如果再次发生错误的话,就会提示是哪个软件出错了,这个时候可以根据提示吧软件给删除了。
ErrRD主要是应用于S60的模拟器上的,有助于开发人员充分了解软件和系统的冲突以及软件的BUG,对于一般用户来说没有什么用处。
如果你的手机没有发生过系统错误,但是却在C盘莫名其妙的有ErrRD这个文件,可以下载安装安装System Explorer v 0.21这个软件,因为System Explorer v 0.21安装包中也有这个C:\resource\errrd安装文件,所以在安装时System Explorer v 0.21由于系统冲突,系统会把C:\resource\errrd给删除,安装System Explorer v 0.21之后再把这个软件给卸载即可。
errrd.sisx (1.38 KB)
下面给出一些错误代码:
KErrNone 0
KErrNotFound-1 找不到指定文件
KErrGeneral-2 一般错误
KErrCancel-3 操作被取消
KErrNoMemory-4 内存不足
KErrNotSupported-5 不支持所要求的操作
KErrAgument-6 错误要求
KErrTotalLossOfprecision-7 精确的失去总和
KErrBadHandle-8 错误的物件
KErrOverflow-9 超出限定的界限
KErrUderflow-10 少于限定的界限
KErrAlreadyExsits-11 已经存在了
KErrPathNotFound-12 找不到指定的目录
KErrDided-13 程序关闭
KErrLnUse-14 指定的物件正被其他程序使用中
KErrServerTerminated-15 服务器已关闭
KErrServerBusy-16 服务器正忙
KErrCompletion-17 完成的过程中出现错误
KErrNotReady-18 还没准备好
KErrUnknow-19 不知名的错误
KErrCorrupt-20 错误
KErrAccessDenied-21 拒绝接受
KErrLocked-22 锁闭
KErrWrite-23 读写失败
KErrDisMounted-24 错误的磁盘
KErrEof-25 出乎预料的文件到了尾端
KErrDiskFull-26 磁盘已满
KErrBadDiver-27 驱动损坏
KErrBadName-28 不允许的名称
KErrCommsLineFail-29 Comms线失败
KErrCommsFrame-30 Comms线框框错误
KErrCommsOverrun-31 Comms线超频错误
KErrCommsParity-32 Comms同位错误
KErrTimeOut-33 时间到了
KErrCouldNotConect-34 连接失败
KErrCouldNotDisconect-35 断连接失败
KErrDisconnected-36 断了
KErrBadLibraryEntryPoint-37 损坏的资料库接入点
KErrBadDescriptor-38 损坏的描述讯息块
KErrAbort-39 中断
KErrToolBig-40 太大
KErrDivideByZero-41 除于零
KErrBadPower-42 电池没电
KErrDirFull-43 目录满
KErrHardwareNotAvallable-44 硬件未准备好