1

我是 BlackBerry 应用程序的新开发人员。我在程序中发现了运行时错误。但我不确定程序中发生了哪种类型的错误。我不知道如何查看 BlackBerry 应用程序中的错误。

我在 Eclipse Helios 工作。

如何查看 BlackBerry 程序中的运行时错误?

4

1 回答 1

0

在 Eclipse 中,您可以调试您的应用程序,方法是通过 USB 电缆连接一个真正的 BlackBerry 设备,或者您可以下载一个 BlackBerry 模拟器并使用它来测试您的应用程序。请注意,BlackBerry 模拟器仅在 Windows 上受支持。

一旦开始调试,您应该会看到 Eclipse Debug 透视图。通常,Eclipse 中打开的窗口之一是控制台窗口。如果您没有看到,请使用 Eclipse 菜单:

Window -> Show View -> Console

当您的应用程序运行(或您的设备已连接)时,您应该会在控制台窗口中看到如下输出:

[0.0] JVM: bklt[1]: setTimeout 120
[0.0] JVM: bklt[1] @438007: JBSC on=0
[0.0] JVM: bklt[1] @438007: SC 0
[0.0] JVM: bklt[1]: setTimeout 120
[0.0] VM:TRJFp=net_rim_services_impl
[0.0] net_rim_crypto_1-3(4CC8AA32)
[0.0]  StatusClean

您的程序创建的任何标准输出(例如System.out.println())都将与来自操作系统的这些消息混合在一起。

BlackBerry 中的普通java.lang.Exception对象删除了许多有用信息,因此如果您不知道抛出了哪种异常或在哪里抛出,您可以选择通过简单地捕获应用程序中的所有 java.lang.Throwable 对象来调试问题主程序

public static void main(String[] args) {
    try {
        Application app = new MyApp();
        app.enterEventDispatcher();
    } catch (Throwable t) {
        t.printStackTrace();
    }
}

public MyApp() {            

    ButtonScreen bs = new ButtonScreen();
    pushScreen(bs);

    bs.throwException();  // <- for test purposes!
}

然后,您会在控制台窗口中看到类似这样的内容,并且可以找出代码中出了什么问题:

[0.0] FocusHistory: Focus gained; App HelloBB; Component mypackage.ButtonScreen$1
[0.0] IllegalArgumentException
[0.0] testing exception handling code!
[0.0] HelloBB(51B3A691)
[0.0]  ButtonScreen
[0.0]  throwException
[0.0]  0x74C
[0.0] HelloBB(51B3A691)
[0.0]  MyApp
[0.0]  <init>
[0.0]  0x151B
[0.0] HelloBB(51B3A691)
[0.0]  MyApp
[0.0]  main
[0.0]  0x14B2
[0.0] VM:TRJFp=HelloBB
[0.0] net_rim_cldc-26(4CC89E31)
[0.0]  BlockingTimeSource
[0.0]  run
[0.0]  0x104D
[0.0] VM:TRJFp=HelloBB
[0.0] net_rim_cldc-26(4CC89E31)
[0.0]  BlockingTimeSource
[0.0]  run
[0.0]  0x104D
[0.0] VM:TRJFp=HelloBB
[0.0] net_rim_cldc-26(4CC89E31)
[0.0]  BlockingTimeSource
[0.0]  run
[0.0]  0x104D

在这种情况下,我把这段代码:

public void throwException() throws Exception {
    throw new IllegalArgumentException("testing exception handling code!");
}

进入我的应用程序,让我的MyApp#main()方法调用MyApp构造函数,它调用ButtonScreen#throwException()方法。

于 2013-06-08T21:55:57.380 回答