我正在尝试在我的索尼爱立信K790i上调试J2ME应用程序,这是一台带有最新Netbeans,J2ME SDK,Sony SDK等的Windows XP上的JP-7手机。
我可以通过USB连接并使用SE Device Explorer。当我从设备资源管理器启动我的应用程序时,它只提供一个异常名称(ArrayOutOfBoundsException)和一个带有“unknown”列表的调用堆栈。有没有办法将调用堆栈转换为过程和行#?有没有办法创建调试二进制文件或任何方式来获得更多提示? 我的应用程序在模拟器上正常启动。它甚至可以在手机上安装得很好,但是当我运行它时,它根本没有任何信息而崩溃。
我甚至试过使用我的手机支持的On Device Debug,但我得到一个OAFcode = 45 EXEcode = 28并且调试会话永远不会启动。虽然它确实在我的手机中创建了一个tempNNNN应用程序。
欢迎任何有用的想法。
答案 0 :(得分:1)
当您在callstack中遇到未知数的异常时,异常来自Java运行时环境。由于SE OSE手机上的闪存空间有限,大多数调试信息都被剥离。可以获取callstack的地址(它通过线路传输,但由DeviceExplorer映射到'unknown'),但由于你没有地址映射来翻译地址,所以它不会对你有好处。
IIRC有一个文本文档描述了sdk中包含的不同错误代码。寻找oafcodes.txt或类似的东西。另外,如果您使用的是Netbeans:在Netbeans中创建新项目时,我认为它默认为MIDP 2.1。 K790是一款旧手机,它只支持2.0。如果您尝试在其上安装2.1应用程序,那么前MIDP 2.1 SE手机将只是barf。
答案 1 :(得分:0)
如果您能够看到异常,那么如果您打印它,您将看到所有堆栈跟踪,并且您将确定问题的原因和位置。可能是,当您将应用程序部署/构建到手机上时,您将禁用调试器使用的编译器属性(例如:添加行号属性等)?
我不知道“未知”例外列表是什么意思。
通常你可以在完整的堆栈中看到引发异常的异常,类方法和行。
顺便问一下,您是否尝试使用KDWP?这看起来很棒。在this tread中,人们谈到了在设备上进行调试。