处理闪退日志

导出crash log,并通过crash log与dsym文件跟踪crash信息

1.如何导出crash report 或者叫crash log

     途径有

    a) 通过Xcode->Windows->Devices 导出手机log

     b)针对没有Xcode的普通用户,可以通过iTunes同步,导出crash log

     设备与电脑上的iTunes Store同步后,会将崩溃日志保存在电脑上。根据电脑操作系统的不同,崩溃日志将保存在以下位置:

     Mac OS X:~/Library/Logs/CrashReporter/MobileDevice/

     Windows XP: C:Documents and Settings/Application/Data/Apple/Computer/LogsCrashReporte/rMobileDevice

     Windows Vista or 7:  C:Users/AppData/Roaming/Apple/Computer/LogsCrashReporter/MobileDevice

   c)从iTunesconnect 导出用户的崩溃报告,具体可以网上搜

2.如何查看crash log?

要用到symbolicatecrash工具 具体参考一下网址

http://www.cocoachina.com/bbs/read.php?tid=180736

在 Android 应用开发中,获取应用闪退(崩溃)的日志信息是调试和修复问题的重要手段。通常可以通过 `adb logcat` 命令来捕获日志信息,从而定位错误原因。 ### 使用 `adb logcat` 获取崩溃日志 `adb logcat` 是 Android SDK 提供的一个命令行工具,用于查看设备或模拟器上的系统日志信息。当应用发生崩溃时,会在日志中记录相关的异常堆栈信息,例如 `FATAL EXCEPTION` 或 `Caused by` 等关键词[^1]。 #### 基本命令 ```bash adb logcat ``` 该命令会输出完整的日志流,包含所有级别的日志信息(Verbose、Debug、Info、Warning、Error、Fatal)。为了更高效地查找崩溃信息,可以结合过滤器使用。 #### 过滤崩溃日志 ```bash adb logcat -p crash:* ``` 此命令仅显示与崩溃相关的日志条目。 也可以通过优先级筛选出错误级别以上的日志: ```bash adb logcat *:E ``` 这将只显示 Error 及以上级别的日志,便于快速定位异常。 #### 保存日志到文件 为了后续分析,可以将日志输出保存到本地文件: ```bash adb logcat > crash_log.txt ``` ### 分析日志内容 典型的崩溃日志结构如下: ``` E AndroidRuntime: FATAL EXCEPTION: main E AndroidRuntime: Process: com.example.myapp, PID: 12345 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setOnClickListener(android.view.View$OnClickListener)' on a null object reference E AndroidRuntime: at com.example.myapp.MainActivity.onCreate(MainActivity.java:20) E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:7802) ``` 上述日志表明应用在 `MainActivity` 的第 20 行代码中发生了空指针异常(`NullPointerException`),具体原因是调用了一个为 `null` 的对象的 `setOnClickListener` 方法[^3]。 ### 使用 `DropBoxManager` 获取持久化日志 除了 `logcat`,Android 系统还提供了 `DropBoxManager` 来记录系统和应用级别的崩溃日志。这些日志可以在设备重启后仍然保留,适用于排查偶发性崩溃问题。要访问这些日志需要系统权限,通常用于系统应用或有特殊调试需求的场景[^2]。 ### 示例:Java 中捕获未处理异常并打印日志 为了增强应用的健壮性,开发者可以在应用中注册全局异常处理器,捕获未处理的异常,并将其写入本地文件以便后续分析: ```java Thread.setDefaultUncaughtExceptionHandler((thread, throwable) -> { // 打印异常堆栈 Log.e("CrashHandler", "Uncaught exception:", throwable); // 将异常信息写入文件 try { FileWriter writer = new FileWriter(new File(context.getFilesDir(), "crash.log")); writer.write(Log.getStackTraceString(throwable)); writer.flush(); writer.close(); } catch (IOException e) { e.printStackTrace(); } // 终止进程 android.os.Process.killProcess(android.os.Process.myPid()); System.exit(1); }); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值