Symbian开发——Carbide.c++ debug on device

第一种方法:Carbide C++ v1.2 的 Debug On Device

Carbide C++1.2的pro.以上版本都支持设备调试,实在是一件大快人心的事。

要实现这个功能,也是相当的方便,当然前提是你用的是Carbide C++ v1.2的Pro.以上版本。

按正常模式写程序,在模拟器上都弄的差不多了,想放到设备中调试的话,只需要做下面几步:
1、先在设备中安装一个软件,安装包在carbide的安装目录下,我机器上的位置是C:/Nokia/Carbide.c++ v1.2/plugins/com.nokia.carbide.trk.support_1.2.0.29/trk/s60,下面有两个 sis文件,因为我要在N73上调试,所以我选择其中的s60_3_0_app_trk_2_7.sisx这个,另一个3_1是用于3rd.FP1手机的。安装后在手机里就有一个TRK应用了。
(在Carbide C++ v2.0的Trk目录是:盘符:/Program Files/Nokia/Carbide.c++ v2.0/plugins/com.nokia.carbide.trk.support_1.4.0.014/trk/s60。

有四个文件:

s60_3_0_app_trk_3_0_8  对应  SDK  3rd

s60_3_1_app_trk_3_0_8  对应  SDK  3rd FP1

s60_3_2_app_trk_3_0_8  对应  SDK  3rd FP2

s60_5_0_app_trk_3_0_8  对应  SDK  5rd

我用的是E62机器,所以装的是第一个。


2、安装成功后,在手机上启动这个服务TRK,因为我是用的USB线,所以点选项,改成USB,端口是1(这里比较奇怪,明明我的端口应该是COM6)。启动后窗口显示:Status:Connected.(如果数据线连接成功,但是始终显示error,可以尝试重启手机)

3、在Carbide C++中,配置一下编译输出目标为Phone Debug(GCCE),这个很重要,只有DEBUG才行。编译出SISX文件。

4、打开DEBUG窗口(即debug...),在配置中的第一项“Symbian OS App Trk“下建立一个新项。几个窗口的输入如下图所示:

http://www.sf.org.cn/Article/UploadFiles/200803/20080315113817129.jpg

http://www.sf.org.cn/Article/UploadFiles/200803/20080315113826304.jpg

http://www.sf.org.cn/Article/UploadFiles/200803/20080315113826157.jpg

(Carbide C++ v2.0 没有上面这个图,也就是没有“Connection”选项,不影响调试)

http://www.sf.org.cn/Article/UploadFiles/200803/20080315113827360.jpg

5、点Apply,然后Debug,就可以启动调试。

第二种方法:利用S60 SDK自带的Ecmt工具进行DEBUG

如果我们用的是Carbide C++ 的Express版(免费版本)的话,我们没办法做设备联机调试,但是可以用SDK中的工具在程序中将调试信息打印到控制台上。在BREW平台上主要就是依靠这种方式。

Symbian提供了一个REmct可以用于远程调试,并且它还提供了两个配套工具:手机端的ecmtagent_cpp.sis和PC端的Device Connection。

这种方式比前一种要稍复杂一点了,因为涉及到代码的修改。

1、首先同样是在手机上安装一个软件ecmtagent_cpp.sis(不过3rd.的SDK下这个东西不能用,说签名过期之类的错误,只能安装3rd. FP1的SDK下的那个同名sis,唉,也不知道Nokia是咋回事)。

2、同样在调试前也是要启动手机上的ecmtagent代理,设置成USB连接(不需要选择端口了)。然后看到窗口上显示listening。

3、在PC上启动那个Device Connection,选择COM6去connect它,状态成为connected。这时发现手机上也显示connected。表明连接成功了。在 Device Connection中打开那个Diagnostics工具,所有的调试信息的就是输出到它的窗口里。

4、最麻烦的是需要修改代码。

A) 修改mmp,加上这个lib。即:LIBRARY        EcmtClient.lib

B)   在要输出调试信息的那个类的h文件中加上:

http://www.sf.org.cn/Article/lumen/200803/20901.html

 

#ifdef _DEBUG
#include  < EcmtClient.h >
#endif

... ...
class CDemoUIAppView : public CCoeControl,MBeating {
   ... ...
     private :
#ifdef _DEBUG
        REcmt iEcmt;
#endif


C)  然后在cpp中加上一个初始化与销毁。

void  CDemoUIAppView::ConstructL(  const  TRect &  aRect )
     {
    CreateWindowL();    
    
... ...
    
#ifdef _DEBUG
    iEcmt.Connect();
 #endif
    
    }


CDemoUIAppView:: ~ CDemoUIAppView()
     {
 ... ...
#ifdef _DEBUG
    iEcmt.Close();
 #endif
    
    }


D) 然后就是在需要输出的地方这样一下:

void  CDemoUIAppView::Beat()
     {
        this->total++;
        if(this->total>100)
            {
             this->total=0;
             iHeart->Cancel();
            }

        TBuf<16> buf;
        buf.Format(KMsgFormat,this->total);
        iLabel->SetTextL(buf);
        DrawNow();
        
#ifdef _DEBUG
        iEcmt.WriteFormat(KFormattedText, this->total);
#endif

    }


5、编译程序,同样是GCCE下的Phone Debug,自己手工安装到手机里,执行它就可以了。要注意的一点是,因为此时前面的那个ecmtagent正在运行,需要将它切到后台去(不是关闭啊!!!)。在Diagnostics的窗口中就会看到输出的调试信息了。

最后要补充一点的是,我在尝试这两种调试方法的时候,经常遇到打开端口失败或者连接失败的情况,一般重启一下手机就正常了,不知道是BUG呢还是因为我同时弄了两个代理在手机里照成的冲突,如果你在使用过程中发现不顺了,不妨也重启一下手机吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值