其主要的实现很简单,就是通过 eventfd 发送一个通知,那这个通知的响应函数是 xc_trace_dumper(),下面来看看它的具体实现。 前面2 步打开日志文件 xc_common_open_trace_log() 和 写入头信息 xc_trace_write_header() 感兴趣的可以自己分析。我们重点是要关注其怎么 dump art 的 trace。 xc_trace_load_symbol...
接下来就是其他日志的处理了,感兴趣的也可以看一下,比如 logcat 日志的获取、文件 fd、网络日志等。至此,就完成了对 trace 的抓取了。 3.Native 异常处理 关于Native 异常处理,官方给的架构图如下,流程上是很清晰的。 在初始化的时候我们分析到,当发生 native 崩溃时,会在信号处理函数 xc_crash_signal_handler...
java-jarxcrash-cli.jar-d/path/to/crash/logs-o/output/path 1. 其中,/path/to/crash/logs是崩溃日志的保存路径,/output/path是分析结果的输出路径。 除了使用命令行工具外,xCrash 还提供了一个简单易用的 Web 界面来分析崩溃日志。我们可以在浏览器中访问http://localhost:8080来打开 xCrash 的 Web 界面。...
xCrash初始化接口,主要对配置信息保存,以及执行日志文件管理。xCrahs配置的可以参见源码提供的xCrash_sample工程。 异常日志格式分析 通过xCrash_sample工程可以对android常见的异常进行测试。下面对日志文件结构进行简单的分析,以便应用发生异常是,通过日志来分析原因。以下日志文件,为采用默认配置输出的异常日志。 异常日志文件。
这里xc_trace_notifier是一个eventfd ,在handler接收信号回调时被写 然后xc_trace_dumper线程会解除阻塞状态开始执行dump任务。本篇文章简单分析了下xcrash2.5.7源码,结合之前 java crash处理分析 和 native crash 处理分析,对app收集奔溃日志的整个过程有了个全面了解。
android系统发生ANR异常是,logcat会输出一条日志,通过日志可以确定,android 发生ANR异常时,会将日志写入/data/anr/traces.txt。因此可以猜想到应用程序可以监控/data/anr/文件是否有写入,即可判断是否发生ANR异常。如何监控文件夹,android提供了一个类“FileObserver”,可以监控文件。但是通过这种方式监控是否发生ANR异常,...
//create log file 日志地址 File logFile =null; try{ StringlogPath =String.format(Locale.US,"%s/%s_%020d_%s__%s%s", logDir, Util.logPrefix, startTime.getTime() *1000, appVersion, processName, Util.javaLogSuffix); logFile = FileManager.getInstance().createLogFile(logPath); ...
//日志捕抓 检测当前进程是否无响应 staticbooleancheckProcessAnrState(Context ctx,longtimeoutMs){ ActivityManager am = (ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE); if(am ==null)returnfalse; intpid = android.os.Process.myPid(); ...
... // 获取崩溃日志 // 回调给 Java 层 xc_crash_callback(); // 将信号重新发送出去,交给旧处理器处理 xcc_signal_crash_queue(si) } 复制代码 一些问题 Native 崩溃发生时,部分信息的获取似乎基于 ptrace 实现的,但个人对 ptrace 没有了解,代码也很难看懂,就不分析了。
xCrash是爱奇艺开源的在android平台上面捕获异常的开源库。 xCrash能为安卓 APP提供捕获Java崩溃异常,native崩溃异常和ANR异常。 xCrash 能在 App 进程崩溃或 ANR 时,在你指定的目录中生成一个 tombstone 文件(格式与安卓系统的 tombstone 文件类似)。 xCrash项目地址: github:https://github.com/iqiyi/xCrashgitee:ht...