首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提高Android的MaxJavaStackTraceDepth

提高Android的MaxJavaStackTraceDepth
EN

Stack Overflow用户
提问于 2015-07-08 12:35:28
回答 1查看 382关注 0票数 0

我遇到了一个很难调试的StackOverFlowError,由于堆栈跟踪的深度有限,我无法找到问题的根源。

是否有可能像-XX:MaxJavaStackTraceDepth=1000000一样增加安卓系统的-XX:MaxJavaStackTraceDepth=1000000?

我不确定这是否有趣,但下面是当前的堆栈跟踪:

代码语言:javascript
复制
java.lang.RuntimeException: An error occured while executing doInBackground()
        at android.support.v4.content.ModernAsyncTask$3.done(ModernAsyncTask.java:137)
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
        at java.util.concurrent.FutureTask.run(FutureTask.java:242)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:841)
 Caused by: java.lang.StackOverflowError
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.childrenAccept(Unknown Source)
        at org.nfunk.jep.EvaluatorVisitor.visit(Unknown Source)
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.childrenAccept(Unknown Source)
        at org.nfunk.jep.EvaluatorVisitor.visit(Unknown Source)
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.childrenAccept(Unknown Source)
        at org.nfunk.jep.EvaluatorVisitor.visit(Unknown Source)
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.childrenAccept(Unknown Source)
        at org.nfunk.jep.EvaluatorVisitor.visit(Unknown Source)
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.childrenAccept(Unknown Source)
        at org.nfunk.jep.EvaluatorVisitor.visit(Unknown Source)
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.childrenAccept(Unknown Source)
        at org.nfunk.jep.EvaluatorVisitor.visit(Unknown Source)
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.childrenAccept(Unknown Source)
        at org.nfunk.jep.EvaluatorVisitor.visit(Unknown Source)
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.childrenAccept(Unknown Source)
        at org.nfunk.jep.EvaluatorVisitor.visit(Unknown Source)
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.childrenAccept(Unknown Source)
        at org.nfunk.jep.EvaluatorVisitor.visit(Unknown Source)
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.childrenAccept(Unknown Source)
        at org.nfunk.jep.EvaluatorVisitor.visit(Unknown Source)
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.childrenAccept(Unknown Source)
        at org.nfunk.jep.EvaluatorVisitor.visit(Unknown Source)
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.childrenAccept(Unknown Source)
        at org.nfunk.jep.EvaluatorVisitor.visit(Unknown Source)
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.childrenAccept(Unknown Source)
        at org.nfunk.jep.EvaluatorVisitor.visit(Unknown Source)
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.childrenAccept(Unknown Source)
        at org.nfunk.jep.EvaluatorVisitor.visit(Unknown Source)
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.childrenAccept(Unknown Source)
        at org.nfunk.jep.EvaluatorVisitor.visit(Unknown Source)
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.childrenAccept(Unknown Source)
        at org.nfunk.jep.EvaluatorVisitor.visit(Unknown Source)
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.childrenAccept(Unknown Source)
        at org.nfunk.jep.EvaluatorVisitor.visit(Unknown Source)
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.childrenAccept(Unknown Source)
        at org.nfunk.jep.EvaluatorVisitor.visit(Unknown Source)
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.childrenAccept(Unknown Source)
        at org.nfunk.jep.EvaluatorVisitor.visit(Unknown Source)
        at org.nfunk.jep.ASTFunNode.jjtAccept(Unknown Source)
        at org.nfunk.jep.SimpleNode.chi

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-08 15:28:14

由于日志记录系统的限制,而不是堆栈深度的限制,输出被切断了。最简单的方法是减少设备上的堆栈深度,使其更快地失败,堆栈跟踪符合4K日志消息。

如果自己创建线程,则可以在线程构造函数中配置堆栈大小。看起来这可能是由线程池创建的,因此您需要提供一个使用ThreadFactory的适当构造函数

有一次,我为android.util.Log编写了一个修补程序,它检测到了这种情况,并去掉了跟踪的中间部分,留下了开始和结束,但我从未使它做好生产准备。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31292872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档