最近这几天一直在弄真机调试,没有想到会碰到一些阻力,不过最终还算终成正果。现将整个过程记录下来,以免遗忘,也好让其他的人少走弯路,花最少的时间搞定。
先说要求吧:真机调试首先要有carbide C++,相应的sdk,以及PC套件,TRK。TRK它主要用途是将相应的数据从真机传递到Carbide,来控制调试过程的。当然不但要有工具,还要你的开发工具要都能正常工作,编译,打包之类。否则就没有进行下面的操作了。首先得保证你的手机已经使用pc套件模式和电脑相连。下面就开始说具体步骤吧:
1.打包生成sisx文件,直接安装到手机上。至于怎么打包,我这里就不详细说明了。我想,既然你都想进行真机调试了,肯定也会基本的步法。但是这里的sisx包与我们平常的sisx包不一样,它是用于调试的,所以在pkg文件中的平台选择应该选udeb的,例如这样:
"C:/S60/devices/S60_3rd_FP2_SDK_v1.1/epoc32/release/gcce/udeb/**.exe" -"!:/sys/bin/**.exe"
如果你的程序还包含其他的dll,同样你的dll也应该选择udeb的。第一步是很简单。要改的就这一处。
2.打开carbide,选定要调试的工程,点击工具栏上“小虫子”调试图标,右键点击debug configruation
在出现的目录树中选择“symbian os Application TRK"注意一定要选择此项,
其他的譬如:symbian os system TRK,等你真正debug的时候就会提示加载失败的错误:Carbide Alert”: “Load Failed”, “TRKProtocolPlugin: Unable to download file..."
.点击右键->new,此时系统会根据你当前选择的工程,创建一个相应的 **phone debug。。如下图
然后点击use connection 下面的那个new 按钮,得到connection type 选择usb。然后再点next,得到如下所示
此时的Serial port 应该选com1,因为TRK的里面被强制成1了。
对应Device os有如下对应的关系:
调试手机的开发平台和carbide c++ 2.0的device OS对应关系估计是这样的:
1、s60 3.0.0对应的是S60 3rd Ed
2、s60 3.1.0对应的是S60 3rd Ed FP1
3、s60 3.2.0对应的是S60 3rd Ed FP2
4、s60 5.0.0对应的是S60 5th Ed
忘记说明一点了,此时是要求联网的,如果没有联网里面会显示会变成灰色的,并且没有选项的。
下面应该选择TRK,而不是Tracing。点击另外一个标签页:安装远程代理
选择你所对应的TRK 点击install即可,通过pc套件相连的手机上就会有安装提示,点击安装即可。
3.安装成功后,在手机上启动这个服务TRK,因为我是用的USB线,所以点选项,改成USB,(通常是蓝牙的模式)端口是1 。这个端口好像是固定的,我们没法修改。
4.以上如果trk状态显示Status:Connected.
说明已经连接上了,这时候就可以使用图三中的(按顺序数)Initial services testing 按钮测试一下。如果显示的英文是已经安装的TRK是最新的版本就说明一切没有问题。这个时候你就可以开始debug了。程序就会自动启动,并且在断点处停下来了。
不过很不幸很多事情都不会那么顺利的。总有一些磕磕碰碰的。
很有可能出现的一种情况就是Serial port 不对。。如果电脑上显示并不是com1-***.**对应你的手机类型。也就是这时候你实际使用的并不是com1,这个时候你必须手动修改成com1,但是机器上trk 的port你不要动。这里引用别人的一段话:
别急,你先检查一下,电脑的“设备管理器”的“端口(COM和LPT)”中,调试手机所用的COM口是几?然后再看看调试手机上TRK的Port是几?2者相同吗?不同的话,恭喜,你碰到我曾经碰到的第二个悲剧了。闲话一下,我使用电脑的前置USB口和手机相连,系统居然分配了COM17用来和调试手机建立连接,而我手机上安装的TRK是3.1.2,Port永远都是1,悲剧就这样发生了。相同呢?相同还是调试失败的话,我也没辙了,你再去google试试吧。
如果相同的悲剧已经上演,还是有办法把它转变为正剧的。回到电脑的“设备管理器”,选择调试手机所用的COM口,进入其属性配置窗口,在“端口设置”中,点下面的“高级”,哈哈,可以修改端口号,赶紧把端口号改成TRK中设定的端口号,一路确定。赶紧再试试吧...
参考链接:
http://blog.csdn.net/comiunknown/archive/2009/10/13/4663094.aspx