Symbian KERN-EXEC 3 错误之慎用 iEikonEnv->AlertWin(_L("xxx"))

慎用iEikonEnv->AlertWin(_L("xxx"))

-----wave

2007.10.12

应该慎重使用iEikonEnv->AlertWin(_L("xxx"))。

我在开发过程中,出现过这种情况:
      iEikonEnv->AlertWin(_L("aaa"));
      iEikonEnv->AlertWin(_L("bbb"));
运行结果是输出aaa,但bbb并没有输出。程序报KERN-EXEC3 错误,并异常退出。(当然,这种情况并不是每次都发生,由于对AlertWin的内部实现不了解,具体原因我也不清楚。)

在发现这个问题之前,困惑了很久,用断点调试也不能准确定位出错的地方。
用断点调试时,感觉出现的问题很诡异,程序执行到一个很平常的输出语句的时候,就停止了。

为这个KERN-EXEC3 错误,浪费了不少时间,最终才明白错误的原因。

估计问题出在AlertWin方法自身存在的bug上,并不是我们程序自身的问题。

问题的对策:

   尽量使用其他信息提示框来代替:iEikonEnv->AlertWin(_L("aaa"))。
   比如,可以使用iEikonEnv->InfoWinL(_L("prompt:"),_L("aaa"));
       或者iEikonEnv->InfoMsg(_L("aaa")); 等等。

我习惯使用iEikonEnv->InfoWinL(_L("prompt:"),_L("aaa"));
这样更改后,问题就解决了!(wave)

__________________________________________________________

__________________________________________________________ 

关于KERN-EXEC 3错误

 1.  Symbian S60 3rd FP1 SDK说明:This panic is raised when an unhandled exception occurs. Exceptions have many causes, but the most common are access violations caused, for example, by dereferencing NULL. Among other possible causes are: general protection faults, executing an invalid instruction, alignment checks, etc. 多由未处理的异常引起,比如:访问冲突、空指针、一般性保护错误、执行非法创建、队列检查等等。

   
     2.   Kern-Exec 3 crashes are often caused due to stack corruption or stack Overflow, prefer the use of heap to the stack. Be aware that recursive functions can eat the stack at runtime — this will lead to a Kern-Exec 3 panic.
        还经常由栈崩溃、栈溢出引起。对于这种情况,推荐使用堆而非栈。注意递归函数在运行时会造成栈溢出。


原文出处: http://blog.csdn.net/wave_1102/archive/2007/10/22/1837715.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值