Android项目中如何打印Exception完整堆栈跟踪?解析Logcat截断标识
Android Logcat中
... 35 more的含义及完整堆栈打印配置 一、... 35 more的含义
... 35 more确实代表还有35行堆栈信息被省略未显示。这是Java/Kotlin异常处理的默认优化行为:当异常存在嵌套关系(比如外层异常包装了内层异常抛出),如果内层异常的栈帧和外层异常的栈帧出现重复重叠部分,系统会自动省略这些重复栈帧,用X more标记,避免输出冗余内容。
二、打印完整Exception堆栈跟踪的配置方法
1. 手动打印时优先使用Log类
捕获异常时,不要用e.printStackTrace()(默认会省略重复栈帧),改用Android系统的Log类输出:
Log.e("YourTag", "发生未处理异常", exception)
Log类默认会输出完整的堆栈跟踪,包含被省略的栈帧部分。
2. 调整Android Studio Logcat的栈帧显示深度
- 打开Logcat面板,点击右上角的齿轮图标进入设置。
- 找到「Stack trace depth」选项,将数值调大(比如设置为1000,默认值通常较小),让Logcat能承载更多栈帧输出。
- 同时关闭「Collapse identical lines」选项,防止相同栈帧被自动折叠隐藏。
3. 遍历异常链打印所有嵌套异常
如果异常存在多层嵌套,可手动遍历异常的cause链,打印每个异常的完整堆栈:
var currentEx: Throwable? = exception while (currentEx != null) { Log.e("YourTag", "异常信息:", currentEx) currentEx = currentEx.cause }
内容的提问来源于stack exchange,提问作者me.at.coding
相关产品推荐
相关产品推荐

