在用Symbian C++做S60应用开发过程中,使用模拟器运行时,如果程序出现panic或者memory leak,系统会弹出对话框,提示异常类型以及相关参数。
程序在真机上运行时,因为考虑到手机用户的感受,不会显示这些异常提示。而针对开发一些只能在真机上进行测试的应用(如与摄像头相关的视频capture)时,这种异常调试信息是非常有用的。那么能否在真机上也显示异常调试信息呢?
答案是肯定的。具体实现方法:
原理:如果手机上存在文件 c:/resource/ErrRd 文件(注意这个文件没有扩展名),则程序运行时如果有异常,系统会弹出提示对话框。
实现:将ErrRd文件放入c:/resource目录,好像挺简单哦。表高兴太早,还有点小麻烦。我用蓝牙链接,根本看不到c:/resource目录,即使在手机上安装file browser,也不能在这个目录下创建、删除文件,因为这个目录是private的,不能随便访问。
采用一个变通方式,sis安装包在作deployment时,是可以向c:/resource下写入文件的,利用这种方式,随便找个可以生成sis包的程序,修改一下pkg文件,添加一个安装部署文件,如:
; something.pkg
; ...
;Files to install
"ErrRd" -"!:/resource/ErrRd"
...
这样生成sis并签名,然后安装到手机上,ErrRd就被复制到c:/resource下了,再搞个有panic或者内存泄漏的程序运行试试,果然有提示信息出现,cool!
在N80(S60 3rd)手机上测试OK.
程序在真机上运行时,因为考虑到手机用户的感受,不会显示这些异常提示。而针对开发一些只能在真机上进行测试的应用(如与摄像头相关的视频capture)时,这种异常调试信息是非常有用的。那么能否在真机上也显示异常调试信息呢?
答案是肯定的。具体实现方法:
原理:如果手机上存在文件 c:/resource/ErrRd 文件(注意这个文件没有扩展名),则程序运行时如果有异常,系统会弹出提示对话框。
实现:将ErrRd文件放入c:/resource目录,好像挺简单哦。表高兴太早,还有点小麻烦。我用蓝牙链接,根本看不到c:/resource目录,即使在手机上安装file browser,也不能在这个目录下创建、删除文件,因为这个目录是private的,不能随便访问。
采用一个变通方式,sis安装包在作deployment时,是可以向c:/resource下写入文件的,利用这种方式,随便找个可以生成sis包的程序,修改一下pkg文件,添加一个安装部署文件,如:
; something.pkg
; ...
;Files to install
"ErrRd" -"!:/resource/ErrRd"
...
这样生成sis并签名,然后安装到手机上,ErrRd就被复制到c:/resource下了,再搞个有panic或者内存泄漏的程序运行试试,果然有提示信息出现,cool!
在N80(S60 3rd)手机上测试OK.