一针见血
随笔 - 2, 文章 - 73, 评论 - 60, 引用 - 0
数据加载中……
[S60]Symbian学习笔记:Debug On Device[转]
在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
}
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呢还是因为我同时弄了两个代理在手机里照成的冲突,如果你在使用过程中发现不顺了,不妨也重启一下手机吧。
posted on 2008-04-26 14:55
郭天文
阅读(1011)
评论(0)
编辑
收藏
引用
所属分类:
S60
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
[S60] S60中Socket Api的调用方法[转载]
[S60]ARM平台独有问题 Writable Static Data in DLLs
[S60]Symbian学习笔记:Debug On Device[转]
[S60]模拟器配置访问网络
[S60]symbian基本类型转换
[s60]如何进行Express Signed的签名
[S60]Symbian 应用软件开发、测试与 S60 平台安全常见问题问答
手机开发平台指南、教程和资料介绍[转载]
[S60]在程序的导航条中插入文本或图片
音频编解码标准
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 郭天文
导航
C++博客
首页
新随笔
联系
聚合
管理
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(11)
给我留言
查看公开留言
查看私人留言
随笔档案
(2)
2007年12月 (1)
2007年9月 (1)
文章分类
(105)
BlackBerry(5)
(rss)
Brew(3)
(rss)
iPhone(1)
(rss)
J2ME(21)
(rss)
S60(24)
(rss)
VC++(15)
(rss)
Windows Mobile(36)
(rss)
文章档案
(73)
2010年6月 (1)
2009年4月 (1)
2008年12月 (1)
2008年10月 (2)
2008年9月 (1)
2008年7月 (4)
2008年6月 (3)
2008年5月 (2)
2008年4月 (9)
2008年3月 (8)
2008年2月 (9)
2008年1月 (6)
2007年12月 (12)
2007年11月 (4)
2007年10月 (5)
2007年9月 (5)
搜索
最新评论
1. re: 回车和换行的区别
抄过来的都不知道改改SB
--乐超
2. re: CListCtrl::SortItems方法
11111111111111
--月下美人
3. re: [Windows Mobile]开发书籍介绍
评论内容较长,点击标题查看
--buy resumes
4. re: [Windows Mobile]开发书籍介绍
评论内容较长,点击标题查看
--here
5. re: [Windows Mobile]开发书籍介绍
评论内容较长,点击标题查看
--check this link
阅读排行榜
1. [转]Eclipse五岁了:Java程序员的Eclipse情结(2776)
2. 大家好!(537)
评论排行榜
1. [转]Eclipse五岁了:Java程序员的Eclipse情结(14)
2. 大家好!(0)