有很多涉及到编译过程的工具.这篇文章里我们仅学习一个最基本的工具编译一个简单应用程序的过程(针对Series 60和UIQ).
命令行工具
第一个涉及到的工具就是bldmake:这个工具可以创建一个命令文件,你将用到这个文件来编译并连接你的应用程序(abld).
Bldmake需要bld.inf文件来完成这些工作
Abld.bat文件是应用程序编译的入口点.
依据你传递给abld命令的参数.将会产生如下文件:一个Visual C++工作区和项目文件(abld makefile vc6),一个Windows模拟器应用程序(abld build wins udeb)或一个真实Symbian设备的应用程序(abld build thumb urel).
VC6和Wins参数可以见名知义(VC6=Visual C++6,Wins=Windows).udeb则意味着”Unicode-Debug”,urel表示”Unicode-Release”.Unicode是一个字符编码格式(有些类似ASCII但Unicode允许外文字符编码(包括汉语)).Debug的意思是你将会产生关于你的应用程序的调试信息(大概是模拟器的版本信息),发布到真实设备上时将不会包含调试信息(已经发布了就不会再需要调试了)
创建调试日志(log)文件
文/Peter Jiang(译自newlc.com)
需要在手机上调试代码或跟踪执行过程?RFileLogger也许可以帮助你.这个class的功能非常强大而且很容易使用.
首先声明一个文件日志的连接并且创建一个log文件
//打开日志文件服务的连接
RFileLogger iLog;
iLog.Connect();
iLog.CreateLog(_L("MyLoggingDirectory"),_L("MyLogFile"),EFileLoggingModeOverwrite);
//...
//关闭log文件和服务器连接
iLog.CloseLog();
iLog.Close(); |
第3行的CreateLog函数有三个参数:
Log路径
Log文件名
记录模式(EFileLoggingModeOverwrite|EFileLoggingModeAppend)
例如下列代码,是我的log文件的full path(手机上的文件系统)
C:/Logs/MyLoggingDirectory/MyLogFile.
对我来说,我习惯把opening代码放到我希望跟踪的class的ConstructL()函数里面,然后在析构函数里closing.在真正编码时,你最好检测一下Connect和CreateLog是否返回了KErrNone.
一旦你完成了这些,你就可以向log文件中输入文本和数据了。基本的命令为:
命令 |
Log文件 |
iLog.Write(_L("Hello World")) |
11/07/2003 4:00:13 Hello World |
iLog.WriteFormat(_L("Result=%d"),err) |
11/07/2003 4:00:13 Result=0 |
iLog.HexDump(aHeader,aHeader,myPtr,4) |
11/07/2003 4:00:13 myBuf:0000: 41 42 00 44 AB.D |
要是不希望记录日期和时间,你可以使用这条语句来关闭它们。
iLog.SetDateAndTime(TBool aUseDate, TBool aUseTime) |
别忘了在MMP文件上加入flogger.lib,还有包含flogger.h头文件。现在可以编译执行你的程序了。
Stop!log文件还没建立呢!正确!这没办法在代码里完成,我们只能手工在C:/Logs/MyLoggingDirectory目录中创建log文件,否则什么日志也不会记录。不需要重新编译。
|