Symbian学习笔记(1)——Debug On Device

系统
在BREW的开发环境中,没有一个联机调试工具,一直是我觉得相当不方便的事情。在S60平台上做开发,至少这一点是能满足我们的需要。

在BREW的开发环境中,没有一个联机调试工具,一直是我觉得相当不方便的事情。在S60平台上做开发,至少这一点是能满足我们的需要。

第一种方法: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应用了。

2、安装成功后,在手机上启动这个服务TRK,因为我是用的USB线,所以点选项,改成USB,端口是1(这里比较奇怪,明明我的端口应该是COM6)。启动后窗口显示:Status:Connected.

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

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

  

  

  

  

  

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文件中加上:  

#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
   
     }[[1860]]

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
     }
[[1860]]

     

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

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

 

[[1861]]#ifdef _DEBUG
[[1861]]#include
<EcmtClient.h>
[[1861]]
#endif
[[1861]]
[[1861]]... ...
[[1861]]class CDemoUIAppView : public CCoeControl,MBeating {
   ... ...
[[1861]]    
private:
[[1861]]#ifdef _DEBUG
[[1861]]         REcmt iEcmt;
[[1861]]
#endif

 

【编辑推荐】

  1. Symbian每6个月发布一款新开源操作系统
  2. 微软建WindowsMarketplace 完善智能机平台
  3. 大力模仿Android 传微软WM6.5可装插件
责任编辑:庞桂玉 来源: it168
相关推荐

2009-04-12 09:00:08

Symbian诺基亚移动OS

2009-04-12 08:59:05

Symbian诺基亚移动OS

2009-04-12 09:01:05

Symbian诺基亚移动OS

2009-04-12 09:06:00

Symbian诺基亚移动OS

2009-04-12 09:02:32

Symbian诺基亚移动OS

2009-04-12 09:03:50

Symbian诺基亚移动OS

2009-04-12 08:57:50

Symbian诺基亚移动OS

2009-04-12 08:55:18

Symbian诺基亚移动OS

2009-04-12 08:51:50

Symbian诺基亚移动OS

2011-06-16 15:59:40

Qt Symbian

2009-04-12 09:07:17

Symbian诺基亚移动OS

2009-04-12 08:45:32

Symbian诺基亚移动OS

2009-04-12 08:48:47

Symbian诺基亚移动OS

2009-04-12 08:50:08

Symbian诺基亚移动OS

2009-04-12 08:46:43

Symbian诺基亚移动OS

2009-04-12 08:52:52

Symbian诺基亚移动OS

2012-05-24 09:38:08

Symbian

2009-09-07 14:54:47

CCNA学习笔记

2010-10-27 13:14:24

Symbian

2013-05-10 14:37:37

点赞
收藏

51CTO技术栈公众号