如何调试BlackBerry程序

时间:2013-06-08 10:42:09

标签: eclipse blackberry blackberry-eclipse-plugin

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

我在Eclipse Helios工作。

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

1 个答案:

答案 0 :(得分:0)

在Eclipse中,您可以通过USB电缆连接真正的BlackBerry设备来调试应用程序,也可以下载a BlackBerry simulator and use it to test your app。请注意,Windows仅支持BlackBerry模拟器。

开始调试后,您应该看到Eclipse 调试 透视图。通常,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对象删除了大部分有用信息,因此如果您不知道抛出什么类型的异常,或者在哪里,您可以选择仅通过{{3}来调试问题在catching all java.lang.Throwable objects中:

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()方法。