Symbian OS 精要 |
| 作者:未知 来源:转载 发布时间:2006-11-30 22:16:59 |
|
大量耗电。 写游戏时,对此尤需特别注意,详情参阅Symbian Developer Network 网站的技术文档 (www.symbian.com/developer/techlib/papers/porting_ 3D_games/XenGames_paper.pdf)。 19. ViewSrv 11 异常对于繁忙运行的程序(例如游戏)是 一个潜在的问题。当您的,或者其他任何程序中的 ViewSrv active object 不能及时响应View Server 时就 会导致此种异常。典型的最长回应时间 是10-20 秒。FAQ-0900 有详细解释,FAQ-0920 有针 对如何避免此类问题的实用技巧。二者均可从 www3.symbian.com/faq.nsf 网页上的Symbian OS FAQ 数据库获取。 20. 您无需使用HBufC::Des()来进入一个HBufC 对 象。只需采用* 操作符来为HBufC 对象解除引用 (dereference)。这对于向某个接受TDesC&(上文的 推荐做法)的函数传递HBufC 参数时尤其有用。 21. 当使用标准的程序.INI 文件的功能时,(即在您的应用 UI 类中使用Application()->OpenIniFileLC(); API 时),确保将版本号信息写入流(stream) 中。这样 使您能够在未来新版本的程序中建立新的流,意味着 即使某个最终用户将来安装您的软件的新版本时,不 会因为在旧的.INI 文件中找不到正确配置或流时发生 异常。 22. 在您的程序中实现框架类(framework class) 时要 小心。应该始终从所提供的平台相关的框架类中继 承。例如,对UIQ 而言,不要从CEikAppUi 继承 您的AppUi 类,而应从CQikAppUi 继承。所有的 应用基类(CQikAppUi、CQikApplication、 CQikDocument)添加的功能支持更广的框架范围 来保证应用程序正确运行。 测试诀窍 1. 最重要的测试诀窍是,在用模拟器时(emulator),正 确的退出您的程序,而不是仅仅简单地关闭整个模拟 器。在调试模式中,在应用程序框架(application framework)的关闭函数前后有内存及句柄检测代码, 当您退出应用程序时,此代码将被调用,从而可检测 到是否有内存泄漏或遗留句柄(例如R 对象)发生。 对UIQ 程序而言,为此目的习惯上在调试模式里提供 一个Exit 菜单选项。 2. 另外一个至关重要的诀窍是在发布您的程序之前确保 在.PKG 文件中包含了正确的平台相关信息。相关平 台相关信息字符串的详情请参照该平台的SDK。 www3.symbian.com/faq.nsf 上的Symbian OS FAQ 数 据库中的FAQ-0853 提供了有用的相关信息。 3. 在写.PKG 文件时,也要确保恰当的使用了“!:\”语 法。一般来说,您的应用程序应可从最终用户手机中 的任何盘中安装、运行。仅有极少量的文件需要放置 于C:\ 盘中(例如.INI 文件)。 调试诀窍 1. 总应先使用模拟器调试;大部分同时发生在模拟器与 硬件上的问题,使用模拟器调试会容易得多。 2. 在编写和调试新的控制类时, 把iEikonEnv->WsSession() .SetAutoFlush(ETrue)置于您的AppUi 的 ConstructL()函数中。这意味着gc draw 指令 会在模拟器中立即显示,而不是在下一次冲刷(flush) 视窗服务器客户端缓冲时。编辑WSINI.INI 文件 (\epoc32\release\winscw\udeb\system\data\),确保 不存在关键字FLICKERFREEREDRAW。这意味着您可 以逐步运行draw 代码,并看到每行代码的效果。然 而,应确保此行代码不留在发布的软件中,因为这会 影响性能。 3. 应定时对源文件运行LeaveScan 工具。该工具可以检 测到所有可以Leave 的函数,并在其名称不以L 结尾 时报错,并提醒源文件中潜在的缺陷或疏忽。在检查 哪些代码应被允许Leave,并确保已正确处理此状况 时,该工具非常有效。参见 www3.symbian.com/faq.nsf 上的Symbian OS FAQ 数 据库里的FAQ-0291,下载该工具并进一步了解。 4. 如果您的程序在正常关闭时因内存泄漏而发生异常, 在MS Visual Studio 中可将泄漏的地址转换为CBase* 类型,从而查看该泄漏对象的类型。 5. 最近为对Symbian OS 开发者提供了新的功能:设备 上调试(on-target debugging)。虽然不是所有的SDK 及工具均已具备此功能,但大多数最近发布的SDK 及 IDE 支持此功能。如可使用此功能,请在发布您的程 序前使用它来检测任何潜在的手机硬件相关的缺陷。 进一步的信息,请阅读SDK 及IDE 文档。 6. 确保‘Just in Time’调试被启用: • 确保在文件“\epoc32\data\epoc.ini”里删除了宏 “JustInTime 0” • 注册表值做如下设定: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows NT\CurrentVersion\AeDebug] "UserDebuggerHotKey"=dword:00000000 "Debugger"="\"C:\\apps\\Metrowerks\\bin\ \IDE.exe\" -p %ld -e %ld" "Auto"="0" 7. 审阅%Temp%epocwind.out 所含的纠错讯息。 8. 使用所有可用的开发工具,包括Lint、Leavesan、 HookLogger、Panix、D_EXC 来检查内存泄漏及其他 错误。这些工具及其他更多有用的工具可在Symbian Developer Network 下载 (www.symbian.com/developer/downloads/tools.html)。 9. FAQ-1344 教您如何诊断并调试违反平台安全 (KErrPermissionDenied) 的故障,这有助于识 别您的程序所缺少的权限(capability)。 |
| [] [返回上一页] [打 印] |
|
文章评论 |
