android 分析方法调用或者错误日志源码的堆栈轨迹以及定位
今天在学习java log的过程中,突然看到这样一段api
void entering(String className, String methodName)
• void entering(String className, String methodName, Object param)
void entering(String className, String methodName, Object[] param)
• void exiting(String className, String methodName)
• void exiting(String className, String methodName, Object result)
记录一个描述进人 /退出方法的日志记录, 其中应该包括给定参数和返回值。
后来我仔细想了下,自己在熟悉公司项目和分析公司错误日志的过程中,经常会碰到某个关键的方法到处被调用的情况,自己搞不清楚整个方法流程. 特别是在分析测试同事给的日志的时候,有时候难免错过很多关键信息. android log是否也能提供这样的信息呢?
后来我去google搜了一下发现了官网的如下信息:
简直是如获至宝呀!
分析堆栈轨迹
每当您的应用因为错误或异常而崩溃时,都会生成堆栈轨迹。您还可以使用 Thread.dumpStack()
等方法输出应用代码中任意位置的堆栈轨迹。
public static void dumpStack() {
new Exception("Stack trace").printStackTrace();
}
其实这个方法也是通过抛异常的方式去显示堆栈的信息
实际测试了一下,还是蛮好用的.
堆栈轨迹会显示导致抛出异常的方法调用列表,以及调用发生的文件名和行号。您可以点击突出显示的文件名,以打开相应文件并检查方法调用的来源。点击 上下箭头分别代表Up the stack trace 和 Down the stack trace 可以在 logcat 窗口中显示的堆栈轨迹行之间快速移动。
从外部来源打开堆栈轨迹
后来看到了更加好用的功能,从外部来源打开堆栈轨迹,分析日志的时候可以直接跳转到源码
当我们需要分析错误报告中与您分享的堆栈轨迹,而不是您在调试时发现的堆栈轨迹的时候,也是可以使用的
对于来自错误报告的外部堆栈轨迹,要获取相同的突出显示且可点击的视图,请按照以下步骤操作:
1 在 Android Studio 中打开您的项目。
注意:请确保您正在查看的源代码的来源应用版本与生成堆栈轨迹的应用版本完全相同。如果代码不同,文件名与行号会不匹配,或堆栈轨迹和您的项目中的调用顺序会不一致。
2 从 Analyze 菜单中,点击 Analyze Stack Trace。
3 将堆栈轨迹文本粘贴到 Analyze Stack Trace 窗口中,然后点击 OK。
4 Android Studio 会在 Run 窗口下打开一个新的 <Stacktrace> 标签页,其中包含您粘贴的堆栈轨迹。
简直是一大利器,官网地址如下: https://developer.android.com/studio/debug/stacktraces?hl=zh-cn