如何在移动设备中获取堆栈跟踪?

Dan*_*ura 5 java debugging stack-trace java-me

我在诺基亚S40中遇到了NullPointerException.

我想知道造成这种异常的原因.

该设备显示:

NullPointerException java/lang/NullPointerException

此错误仅发生在设备中,在模拟器中运行,应用程序正常工作.

我使用microlog来调试我的应用程序.但是如果启用了日志,则应用程序可以正常运行.

当我得到这个NullPointerException时,有没有办法获得堆栈跟踪?我不需要所有细节,如行号,哪种方法导致此异常.

更新:我在另一台诺基亚S40中安装了相同的应用程序,但没有发生同样的错误.

  • 诺基亚2660 - 错误
  • 诺基亚6131 - 没有错误

更新2:不知何故,我发现导致NullPointerException的原因.

    import javax.microedition.lcdui.Canvas;
    import javax.microedition.lcdui.Graphics;

    public class OuterClass extends Canvas {

    private Config config;

    public OuterClass() {
        this.config = new Config();
    }

    public void paint(Graphics graphics) {
        HelperClass helper = new HelperClass(this.config);
        helper.doStuff();
    }

    public void dispose() {
        this.config = null;
    }

    public class Config implements IConfig {
        public int getSomething() {
            // ...
        }
    }
}


 public class HelperClass {

        private IConfig config;

        public HelperClass(IConfig) {
            this.config = config;
        }

        public doStuff() {
            config.getSomething(); // Here is thrown NullPointerException
        }
    }
Run Code Online (Sandbox Code Playgroud)

在某些情况下,启动一个线程并在helper.doStuff()之前调用OuterClass.dispose(),从而导致NPE.我认为当我启用日志时,它使线程变慢,并且当我预期它被调用时调用了helper.doStuff().

Gre*_*tes -2

您可以尝试在某些高级 try/catch 块中捕获异常,然后将跟踪通过电子邮件发送给自己。