1. 程式人生 > >iOS中捕獲使用者的崩潰日誌

iOS中捕獲使用者的崩潰日誌

iOS開發中遇到程式崩潰是很正常的事情,如何在程式崩潰時捕獲到異常資訊並通知開發者,是大多數軟體都選擇的方法。下面就介紹如何在iOS中實現:

1. 在程式啟動時加上一個異常捕獲監聽,用來處理程式崩潰時的回撥動作
 NSSetUncaughtExceptionHandler (&UncaughtExceptionHandler);
 官方文件介紹:Sets the top-level error-handling function where you can perform last-minute logging before the program terminates.
 UncaughtExceptionHandler
是一個函式指標,該函式需要我們實現,可以取自己想要的名字。當程式發生異常崩潰時,該函式會得到呼叫,這跟C,C++中的回撥函式的概念是一樣的。


2. 實現自己的處理函式
void UncaughtExceptionHandler(NSException *exception) {
 NSArray *arr = [exception callStackSymbols];//得到當前呼叫棧資訊
 NSString *reason = [exception reason];//非常重要,就是崩潰的原因
 NSString *name = [exception name];//異常型別

 NSLog(@"exception type : %@ \n crash reason : %@ \n call stack info : %@", name, reason, arr);

}

以上程式碼很簡單,但是帶來的作用是非常大的。

獲取到了崩潰的日子,如何傳送給開發者呢,目前一般有以下兩種方式:
1. 將崩潰資訊持久化在本地,下次程式啟動時,將崩潰資訊作為日誌傳送給開發者。

2. 通過郵件傳送給開發者。 不過此種方式需要得到使用者的許可,因為iOS不能後臺傳送簡訊或者郵件,會彈出傳送郵件的介面,只有使用者點選了傳送才可傳送。 不過,此種方式最符合蘋果的以使用者至上的原則。
傳送郵件程式碼也很簡單:
NSString *crashLogInfo = [NSString stringWithFormat:@"exception type : %@ \n crash reason : %@ \n call stack info : %@", name, reason, arr];

 NSString *urlStr = [NSString stringWithFormat:@"mailto://[email protected]?subject=bug報告&body=感謝您的配合!


"
 "錯誤詳情:%@",
 crashLogInfo];
 NSURL *url = [NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
 [[UIApplication sharedApplication] openURL:url];

以上就是iOS中捕獲異常常用的方法,大家可以不妨一試!

相關推薦

iOS 捕獲程式崩潰日誌

iOS開發中遇到程式崩潰是很正常的事情,如何在程式崩潰時捕獲到異常資訊並通知開發者,是大多數軟體都選擇的方法。下面就介紹如何在iOS中實現:1. 在程式啟動時加上一個異常捕獲監聽,用來處理程式崩潰時的回撥動作 NSSetUncaughtExceptionHandler (&UncaughtExcep

iOS-捕獲程式崩潰日誌-NSSetUncaughtExceptionHandler

iOS開發中遇到程式崩潰是很正常的事情,如何在程式崩潰時捕獲到異常資訊並通知開發者,是大多數軟體都選擇的方法。下面就介紹如何在iOS中實現:1. 在程式啟動時加上一個異常捕獲監聽,用來處理程式崩潰時的回撥動作 NSSetUncaughtExceptionHandler (&UncaughtExcep

iOS捕獲使用者的崩潰日誌

iOS開發中遇到程式崩潰是很正常的事情,如何在程式崩潰時捕獲到異常資訊並通知開發者,是大多數軟體都選擇的方法。下面就介紹如何在iOS中實現:1. 在程式啟動時加上一個異常捕獲監聽,用來處理程式崩潰時的回撥動作 NSSetUncaughtExceptionHandler (&UncaughtExcep

捕獲異常崩潰日誌(iOS)

在進行iOS開發的時候,有時會遇到app不能聯機(連線開發工具Xcode)除錯的情況;或者測試同事遇到了崩潰問題(不容易復現),要我們解決。類似的情況,我們可以在程式裡新增一段程式碼,把崩潰日誌儲存到本地,app再次啟動的時候把崩潰日誌傳送到我們的伺服器;然後,

ios的奇怪崩潰Signal和EXC_BAD_ACCESS錯誤分析

奔潰 ges bad strong 分享圖片 bject 文章 原子 exc 什麽是Signal 在計算機科學中,信號(英語:Signals)是Unix、類Unix以及其他POSIX兼容的操作系統中進程間通訊的一種有限制的方式。它是一種異步的通知機制,用來提醒進程一個事

iOS使用dispatch_sync崩潰問題。總結

崩潰發現是這樣的,在維護專案過程中,有個地圖的功能,在地圖上會新增很多的標註物,但是我在測試過程中發現只要快速操作,比如連續點選放大地圖,就會出現崩潰現象。 崩潰點在dispatch_sync上面,使用同步縣城 dispatch_sync(dispatch_get_mai

golang 根據啟動命令切換不同資料庫以及在中介軟體捕獲異常記錄日誌

dataBase := flag.Bool("MySql",false,"true :線上,false: 線下 預設:false") flag.Parse() //*dataBase=true db.InitDB(*dataBase) //初始化資料庫 根據 data

ios開發崩潰日誌log

typedef enum{ QFLogLevelFail = 0, QFLogLevelError, QFLogLevelWarning, QFLogLevelInfo, QFLogLevelDebug }QFLogL

iOS手動匯出dSYM檔案,用於解析崩潰日誌

符號表檔案.dSYM實際上是從Mach-O檔案中抽取除錯資訊而得到的檔案目錄,實際用於儲存除錯資訊的檔案是DWARF,其出身可以從這篇文章瞭解。 這個是我T9專案匯出的檔案路徑 /Appl

iOS崩潰類型

truct enable 進行 http arc product 包含 產生 abr http://blog.csdn.net/womendeaiwoming/article/details/44243571 OS中的崩潰類型 在這裏了解一下XCode用來表示

iOS 符號化崩潰日誌

term 崩潰 neo 文件 ica evel xcode 符號 ati 1、獲取一下三個文件 1. crash報告(.crash文件) 2. 符號文件 (.dsymb文件) 3. 應用程序文件 (appName.app文件,把IPA文件後綴改為zip,然後解壓,Pay

iOS崩潰日誌 如何看

ffd 通過 1.0 san version sig cps fff pre 轉載至搜狗測試 日誌主要分為六個部分:進程信息、基本信息、異常信息、線程回溯、線程狀態和二進制映像。 我們在進行iPhone應用測試時必然會在“隱私”中找到不少應用的崩潰日誌,但是不會閱讀對於

iOS 獲取崩潰日誌

新建一個類CatchCrash @interface CatchCrash : NSObject void uncaughtExceptionHandler(NSException *exception); @end @implementation CatchCrash void un

iOS開發之崩潰日誌符號化及程式碼定位

提交應用到App Store時如果稽核被拒,可能會發送給我們一個崩潰日誌,如果提示資訊不足以讓我們知道崩潰在哪裡,那就使用以下這種通過定位日誌從而知道崩潰vc與行數。 // 回到你的打包介面 // 找到.dsYM檔案 這時回到iTunes con

[安卓開發基礎]捕獲崩潰日誌方法

CrashHandler.java package com.landicorp.android.factorytest; import java.io.File; import java.io.FileOutputStream; import java.io.PrintWriter; imp

iOS--上線被拒如何從蘋果返回的崩潰日誌iOS.crash檔案處理找崩點(看這篇就懂了)

2017年底了,現在蘋果上線的越來越嚴,導致被拒的次數也是越來越特多。我們從蘋果給的提示可以看出我們大概崩潰的位置,但是作為程式設計師的我們,找到具體崩潰的點才能更好的修復。 AppStore稽核沒有通過,給了3個crashLog.txt檔案,可是開啟後都是十六進位制的東東(根本不知道

捕獲應用程式崩潰日誌

  作為一名iOS移動應用開發者,為了確保你的應用程式正確無誤,在將應用程式提交到應用商店之前,你必定會進行大量的測試工作;而且在你測試的過程中應用程式執行的很好,但是在應用商店上線之後,還是有使用者抱怨應用程式會“閃退”!現在作為應用程式的開發人員你肯定會

iOS 之獲取崩潰日誌

為了更好的維護iosAPP,處理程式崩潰是必需要做的,那麼如何收集使用者使用時出現的崩潰呢,基本的方法如下:1.上傳appStore的app,可以通過iTunes Stroe獲取2.利用Xcode獲取。3. Crashlytics,Hockeyapp ,友盟,Bugly 等等

iOS 崩潰日誌分析(個人總結,最實用)

要分析奔潰日誌需要三個檔案:crash日誌,symbolicatecrash分析工具,.dSYM符號集 0. 在桌面建立一個crash資料夾 1. 需要Xcode自帶的崩潰分析工具symbolicatecrash,這個檔案的位置參考:/Applications/Xcode.

iOS 崩潰日誌 Backtrace的符號化

iOS的崩潰日誌配合dsym檔案可以找到崩潰時的backtrace,這是解決崩潰的最重要的資訊. 如果是在同一臺mac上打包, 匯入crash log時候會自動將backtrace符號化,可以看到方法名, 檔名和行號 但是,有時候發版的包不是在你的mac上打包的,xcode