gpt4 book ai didi

java - 使用 ProGuard 后异常跟踪不显示私有(private)方法的行号

转载 作者:行者123 更新时间:2023-12-01 23:36:41 24 4
gpt4 key购买 nike

例如,以下错误消息显示从 GameController.java 中的第 435 行抛出 NullPointerException:

java.lang.NullPointerException
at com.fuu.mahjong.game.GameController.boolean showHint(boolean)(GameController.java:435)
at com.fuu.mahjong.game.GameViewActivity.boolean onTouch(android.view.View,android.view.MotionEvent)(GameViewAct
ivity.java:1552)
at android.view.View.dispatchTouchEvent(View.java:7122)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2176)
...

其中 GameController.java 中的第 435 行是

clearCurrentSelections();

clearCurrentSelections()是GameController中的私有(private)方法,错误消息不会显示clearCurrentSelections()内部的跟踪信息,如果我将clearCurrentSelections()更改为public,则错误消息会显示clearCurrentSelections()中的哪一行导致NullPointerException .

使用ProGuard后有什么办法可以显示私有(private)方法内的跟踪信息吗?

最佳答案

ProGuard 的优化步骤可能已经内联了该方法。然后,虚拟机在堆栈跟踪中生成更少的行。如果您想避免这种情况,可以禁用方法内联:

-optimizations !method/inlining/*

在 Dalvik 虚拟机上,方法内联虽然提高了性能。

方法是否私有(private)对于优化来说并不重要,除非您的配置明确保留公共(public)方法。

关于java - 使用 ProGuard 后异常跟踪不显示私有(private)方法的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18562503/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com