在设备上调试 j2me

Posted

技术标签:

【中文标题】在设备上调试 j2me【英文标题】:Debugging j2me on a Device 【发布时间】:2008-12-01 17:37:45 【问题描述】:

有没有人成功地将调试器附加到系留设备上?我能够在模拟器中调试我的 j2me 应用程序,但是当它们出现时,在解决特定于电话的问题时遇到了很多麻烦。我使用的手机是诺基亚 N95,但理想情况下,调试过程适用于任何手机。

这可能吗?如果是这样,是否有人有他们用来设置它的步骤?

【问题讨论】:

【参考方案1】:

索尼爱立信至少从K700开始支持在ebery手机上进行调试,这是通过使用KDWP完成的。 UIQ 3 通信器也可以用同样的方式调试。

顺便说一句,SE 的最新款手机甚至可以监控内存消耗和 CPU 分析。所以如果你想在真机上调试你的应用程序,我建议你也使用 SE 手机,他们真的很擅长。我使用 Netbeans,它在任何 SE 手机上都可以正常工作。

【讨论】:

【参考方案2】:

摩托罗拉手机支持名为KDWP(需要注册Motodev)的调试接口。他们的MIDway 工具还可用于从设备上运行的midlet 获取调试跟踪信息。

【讨论】:

【参考方案3】:

如前所述,设备上的调试完全取决于制造商的意愿,而且通常几乎是不可能的。但是,我可以向您发送电子邮件至 Gear Java Mobile Framework,让您有机会使用设备上的调试控制台打印您的消息,从而阅读电话特定问题。如果您需要有关如何使用它的一些说明,请查看this tutorial

【讨论】:

【参考方案4】:

不幸的是,这通常是不可能的。一些制造商(如索尼爱立信)在他们的一些手机上支持这一点,但不是全部。我不确定是否有 N95 的设备上调试工具,但您可以使用诺基亚的模拟器,它应该非常接近设备。新的Java ME SDK 有望在不久的将来实现真正的 ODD。但这仍然很大程度上取决于OEM合作。

【讨论】:

【参考方案5】:

我发现一个很好的调试方法是控制一个字符串值,当它不为空时,它会被绘制在其他所有内容之上。这在任何地方都可以工作,虽然显然不是很理想,但可以用来捕获异常、打印值等。当然你仅限于小屏幕,但理论上你甚至可以编写一些滚动功能。

有些人使用 RMS 日志记录,但我个人永远不会被打扰。

正如其他人在这里所说,摩托罗拉有 Midway,我认为这很棒。

【讨论】:

【参考方案6】:

这里的其他人是正确的,因为设备上的调试非常特定于设备。我没有对 60 系列做任何事情,但至少在 40 系列手机上,我必须打开一个 CommConnection 并写出来才能看到发生的大部分事情。设备模拟器又是一个混合包,但您通常可以获得 90% 的应用程序在它们上工作的方式,并且通常可以让您的调试器连接到它们。如果您没有使用手机上的任何硬件,那应该可以帮助您完成大部分工作。

【讨论】:

【参考方案7】:

我有时使用 Blackberry 工具来调试 J2ME 应用程序(不使用 RIM API),但它非常慢,而且仍然只是模拟,而不是实际设备(但它有时确实有助于摆脱奇怪的事情) .我同意当您在模拟器上运行某些东西却发现它不能在硬件上运行时,这很令人沮丧。

【讨论】:

【参考方案8】:

你不能像android或其他SDK那样一步步调试。

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

示例:添加Log.p("Log statement.....");

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

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

【讨论】:

【参考方案9】:

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

公共无效我的方法() Debug.traceMethod("myMethod"); 整数变量 = 1; Debug.ne​​wLine(); 变量++; Debug.ne​​wLine(); ...

【讨论】:

以上是关于在设备上调试 j2me的主要内容,如果未能解决你的问题,请参考以下文章

在 CDC 设备 j2me 上播放音频

如何从 NetBeans 直接在移动设备上运行 J2ME 应用程序?

J2ME:设备上的多个 HttpConnection 失败(诺基亚 C2-O3)

如何修复诺基亚设备(J2me)中的媒体异常

使用 j2me 在游戏中的诺基亚设备振动

非 GPS 设备上的 J2ME 位置 API (JSR 179)