【发布时间】:2020-01-12 22:57:25
【问题描述】:
今天我试图调查这个问题:https://github.com/codenameone/CodenameOne/issues/2975 我在这里写信是想问我如何才能确切地找到问题所在。这个错误令人沮丧。
基本上,仅在 iOS 上,我有这个错误,发生在一些随机应用程序使用后:
java.lang.NullPointerException
at com_codename1_ui_Form.pointerReleased:3758
at net_informaticalibera_cn1_simpleapi_OuterForm.pointerReleased:360
at com_codename1_ui_Component.pointerReleased:4679
at com_codename1_ui_Display.handleEvent:2289
at com_codename1_ui_Display.edtLoopImpl:1214
at com_codename1_ui_Display.mainEDTLoop:1132
at com_codename1_ui_RunnableWrapper.run:120
at com_codename1_impl_CodenameOneThread.run:176
at java_lang_Thread.runImpl:153
我已经重写了pointerReleased 方法来查看x 和y 在上一个异常抛出时是否是可接受的值,看起来是这样:
@Override
public void pointerReleased(int x, int y) {
try {
super.pointerReleased(x, y);
} catch (Exception ex) {
Log.p("OuterForm.pointerReleased ERROR, x->" + x + ", y->" + y + ", https://github.com/codenameone/CodenameOne/issues/2975");
Log.e(ex);
SendLog.sendLogAsync();
}
}
使用该覆盖,相当于崩溃保护功能,在第一次发生此异常后,TextArea 组件不再可用:点击它们不会打开 VKB。
简而言之,Form.pointerReleased的iOS端口内部有一个NullPointerException:如何发现该方法的哪一行引发了异常?我希望找到可以帮助解决错误的信息。
【问题讨论】:
-
我可以用 Xcode 运行应用程序,但我不知道如何调试问题
-
如果您在 xcode 调试器中运行它,它应该会在异常行中断并在本机代码中为您提供完整的堆栈跟踪。
-
嗨 Shai,不幸的是 Xcode 并没有在异常行上停止,这就是为什么我需要更详细的建议来调试此类问题。 Xcode 生成的本机日志与我在此处报告的堆栈跟踪相同。
-
我找到了无需 Xcode 即可解决此问题的解决方案。我为我的问题添加了答案。
标签: codenameone