在设备上调试J2ME应用程序

7

有人曾经成功地将调试器连接到绑定设备吗?我能够在模拟器中调试我的j2me应用程序,但是当出现手机特定问题时,很难解决。我使用的手机是诺基亚N95,但理想情况下,调试过程适用于任何手机。

这可能吗?如果是,是否有人有设置步骤?

9个回答

3

自K700起,Sony Ericsson支持在每个手机上进行调试,这是通过使用KDWP完成的。UIQ 3通讯器也可以用同样的方式进行调试。

顺便说一下,在SE的最新手机上,甚至可以监视内存消耗和CPU分析。因此,如果您想在真实的手机上调试应用程序,我建议您也使用SE手机,它们非常擅长此项工作。我使用Netbeans,并且它与任何SE手机都可以无问题地配合使用。


2

就像其他人所说的一样,设备上的调试严格取决于制造商的意愿,通常几乎不可能。然而,我可以向您介绍 Gear Java Mobile Framework,它提供了使用设备上的调试控制台打印消息并因此读取手机特定问题的机会。如果您需要有关如何使用它的说明,请参考本教程


2

Motorola手机支持一个名为KDWP的调试接口(需要Motodev注册)。它们的MIDway工具对于从设备上运行的midlet获取调试跟踪信息也很有用。


1

很遗憾,这通常是不可能的。一些制造商(如Sony-Erricson)在某些手机上支持此功能,但并非所有手机都支持。我不确定N95是否有设备上调试工具,但您可以使用诺基亚的模拟器,它应该非常接近实际设备。新的Java ME SDK承诺在不久的将来提供真正的ODD。但这仍然在很大程度上取决于OEM的合作。


1
我发现一个好的调试方法是控制一个字符串值,当它不为null时,它会被绘制在其他所有内容的顶部。虽然这样做在任何地方都可以工作,但显然不是理想的,但可以用于捕获异常、打印值等等。当然你受限于小屏幕,但理论上你甚至可以编写一些滚动功能。
有些人使用RMS日志记录,但我个人从来没有费心过。
正如其他人在这里所说,摩托罗拉有Midway,我认为它很棒。

0

其他人在这里的观点是正确的,即设备上的调试非常依赖于设备本身。我没有使用过Series 60,但至少在Series 40手机上,我必须打开CommConnection并写入其中才能看到任何事情发生。设备模拟器再次是一个混合包,但通常您可以完成应用程序的90%并且通常可以将调试器连接到它们。如果您没有利用手机上的任何硬件,则应该可以完成大部分工作。


0
我曾经偶尔使用黑莓工具调试 J2ME 应用程序(而不使用 RIM API),但它非常慢,仍然只是模拟,而不是真实设备(但有时会帮助解决一些问题)。当你把东西运行在模拟器上,只发现它不能在硬件上运行时,我同意这很令人沮丧。

0

你不能像Android或其他SDK一样逐步调试。

在J2ME中,您可以通过在代码中添加日志语句并添加另一个midlet来跟踪错误,并在该midlet中显示该日志屏幕。

例如:添加Log.p("日志语句.....");

LogMidlet.java 
// Add the following line in the startup method of this midlet.
    Log.getInstance().showLog();

这样你就可以在j2me中追踪错误了。


-2

我认为在预处理步骤中添加额外的调试信息是可能的。像这样:

public void myMethod() {
    Debug.traceMethod("myMethod");
    int var = 1;
    Debug.newLine();
    var++;
    Debug.newLine();
    ...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接