测试诀窍
1. 最重要的测试诀窍是,在用模拟器时(emulator),正确的退出您的程序,而不是仅仅简单地关闭整个模拟器。在调试模式中,在应用程序框架(applicationframework)的关闭函数前后有内存及句柄检测代码,
当您退出应用程序时,此代码将被调用,从而可检测到是否有内存泄漏或遗留句柄(例如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"20
7. 审阅%Temp%epocwind.out 所含的纠错讯息。
8. 使用所有可用的开发工具,包括Lint、Leavesan、HookLogger、Panix、D_EXC 来检查内存泄漏及其他错误。这些工具及其他更多有用的工具可在SymbianDeveloper Network 下载(www.symbian.com/developer/downloads/tools.html)。
9. FAQ-1344 教您如何诊断并调试违反平台安全(KErrPermissionDenied) 的故障,这有助于识别您的程序所缺少的权限(capability)。
参考读物
[1] Symbian Developer Network newsletter
http://www.symbian.com/developer/faq/index.html (http://www.symbian.com/developer/faq/index.html)
[2] Symbian OS FAQ database
http://www.symbian.com/developer/techlib/faq.html (http://www.symbian.com/developer/techlib/faq.html)
[3] Symbian OS C++ Coding Standards paper
http://www.symbian.com/developer/techlib/p....pdf#one (http://www.symbian.com/developer/techlib/papers/coding_stds/2003-01_SyOSCodStn.pdf#one)
[4] Coding Idioms paper
http://www.symbian.com/developer/techlib/p...anOS.pdf (http://www.symbian.com/developer/techlib/papers/coding_idioms/2002_10_09_codingSymbianOS.pdf)
[5] Symbian Press
http://www.symbian.com/developer/books (http://www.symbian.com/developer/books)
[6] Games Writing paper
http://www.symbian.com/developer/techlib/p...aper.pdf (http://www.symbian.com/developer/techlib/papers/porting_3D_games/XenGames_paper.pdf)
[7] Active Objects paper
http://nds2.ncsp.nokia.com/download/?asset...=symbian (http://nds2.ncsp.nokia.com/download/?asset_id=11981;ref=symbian)
or
http://www.forum.nokia.com/main/1,,1_32_10_5,00.html (http://www.forum.nokia.com/main/1,,1_32_10_5,00.html)
开发者资源
Symbian Developer Network
http://www.symbian.com/developer (http://www.symbian.com/developer)
Symbian Developer Network Newsletter
http://www.symbian.com/developer/newsletter.html (http://www.symbian.com/developer/newsletter.html)
Symbian OS Tools Providers
http://www.symbian.com/developer/downloads...ers.html (http://www.symbian.com/developer/downloads/tools_providers.html)
Sony Ericsson Developer World
http://developer.sonyericsson.com/site/znch/home/p_home.jsp (http://developer.sonyericsson.com/site/znch/home/p_home.jsp)
Forum Nokia
http://forum.nokia.com (http://forum.nokia.com)
Sun Microsystems Developer Services
http://gceclub.sun.com.cn/NASApp/sme/contr...t?tid=01 (http://gceclub.sun.com.cn/NASApp/sme/controller/teclist?tid=01)