索尼爱立信JP-7 j2me调试

2022-09-04 23:37:20

我正在尝试在我的索尼爱立信K790i上调试J2ME应用程序,这是Windows XP上的JP-7手机,具有最新的Netbeans,J2ME SDK,Sony SDK等。

我可以 USB 连接并使用 SE 设备资源管理器。当我从设备资源管理器启动我的应用程序时,它只给出了一个异常名称(ArrayOutOfBoundsException)和一个带有“未知”列表的调用堆栈。有没有办法将调用堆栈转换为过程和行 #?有没有办法创建调试二进制文件,或者有没有办法获得更多提示?我的应用在模拟器上启动正常。它甚至可以在手机上安装正常,但是当我运行它时,它崩溃了,根本没有任何信息。

我甚至尝试过使用我的手机支持的设备上调试,但我得到一个OAFcode = 45 EXEcode = 28,调试会话从未启动。虽然它确实在我的手机中创建了一个tempNNNN应用程序。

欢迎任何可能有帮助的想法。


答案 1

当您在调用堆栈中遇到未知数异常时,该异常来自 Java 运行时环境。由于SE OSE手机上的闪存空间有限,大多数调试信息都被剥夺了。可以获取调用堆栈的地址(它通过线路传输,但由 DeviceExplorer 映射到“未知”),但它对你没有多大好处,因为你没有地址映射来转换地址。

IIRC有一个文本文档,描述了sdk中包含的不同错误代码。寻找oafcodes.txt或类似的东西。

另外,如果您使用的是 Netbeans:当您在 Netbeans 中创建新项目时,我相信它默认为 MIDP 2.1。K790是一款旧手机,仅支持2.0。MIDP 2.1 SE 之前的手机,如果您尝试在其上安装 2.1 应用程序,则只会感到尴尬。


答案 2

如果您能够看到异常,那么如果打印它,您将看到所有堆栈跟踪,并且您将确定问题的原因和位置。可能是,当您将应用程序部署/构建到手机时,您是否禁用了调试器使用的编译器属性(例如:添加行号属性等)?

我不知道“未知”例外列表是什么意思。

通常,您可以在完整堆栈中看到引发的异常,导致问题的类方法和行。

顺便说一句,你试过使用KDWP吗?这似乎是一个很好的解决方案。在此踏板中,人们谈论在设备上进行调试。