From 8c9eda876fbce8b2c4997e5586729d6bce26a82b Mon Sep 17 00:00:00 2001 From: bluesea <307723040@qq.com> Date: Mon, 25 Mar 2024 15:01:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=B4=A9=E6=BA=83=E6=8A=A5?= =?UTF-8?q?=E5=91=8A=E5=90=8E=E6=B8=85=E9=99=A4=E6=9C=AC=E5=9C=B0=E4=B9=8B?= =?UTF-8?q?=E5=89=8D=E7=9A=84=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SwiftProject/SwiftProject/AppDelegate.swift | 1 + .../SwiftProject/CopyCrashHandler.swift | 79 +++---------------- 2 files changed, 13 insertions(+), 67 deletions(-) diff --git a/SwiftProject/SwiftProject/AppDelegate.swift b/SwiftProject/SwiftProject/AppDelegate.swift index e49b928..a941f7e 100644 --- a/SwiftProject/SwiftProject/AppDelegate.swift +++ b/SwiftProject/SwiftProject/AppDelegate.swift @@ -48,6 +48,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { if data != nil { let crushStr:String? = String.init(data: data! as Data, encoding: String.Encoding.utf8) Analytics.logEvent("app_crash", parameters: ["crashInfo":crushStr ?? ""]) + CopyCrashHandler.cleanCrashInfo() } } diff --git a/SwiftProject/SwiftProject/CopyCrashHandler.swift b/SwiftProject/SwiftProject/CopyCrashHandler.swift index 22cf07a..5c2d963 100644 --- a/SwiftProject/SwiftProject/CopyCrashHandler.swift +++ b/SwiftProject/SwiftProject/CopyCrashHandler.swift @@ -6,78 +6,24 @@ // import Foundation -//public class CopyCrashHandler -//{ -// public static func setup(callBack:@escaping CrashCallback){ -// crashCallBack = callBack; -// registerSignalHanlder(); -// } -//} -// -//public typealias Completion = ()->Void; -//public typealias CrashCallback = (String,Completion)->Void; -// -//public var crashCallBack: CrashCallback? -// -// -// -// -//func signalHandler(signal:Int32) -> Void { -// let stackTrace = Thread.callStackSymbols.joined(separator: "\r\n") -// crashCallBack?(stackTrace,{ -// unregisterSignalHandler(); -// exit(signal); -// }); -//} -// -//func registerSignalHanlder() -//{ -// objc_setUncaughtExceptionHandler { (_response:Any?) in -// if let signal = _response as? Int32 { -// signalHandler(signal: signal) -// } -// else if let exception = _response as? NSException { -// crashCallBack?(exception.reason ?? exception.callStackSymbols.joined(separator: "\r\n"),{ -// unregisterSignalHandler(); -// exception.raise() -// }); -// } -// } -// -// signal(SIGINT, signalHandler); -// signal(SIGSEGV, signalHandler);//野指针,僵尸对象 -// signal(SIGTRAP, signalHandler); -// signal(SIGABRT, signalHandler); -// signal(SIGILL, signalHandler); -// signal(SIGBUS, signalHandler); -// signal(SIGFPE, signalHandler); -// signal(SIGTERM, signalHandler); -// signal(SIGKILL, signalHandler);//CPU无法执行的代码(比如无效指令、除以0等) -// signal(SIGPIPE, signalHandler); -//} -// -//func unregisterSignalHandler() -//{ -// signal(SIGINT, SIG_DFL); -// signal(SIGSEGV, SIG_DFL); -// signal(SIGTRAP, SIG_DFL); -// signal(SIGABRT, SIG_DFL); -// signal(SIGILL, SIG_DFL); -// signal(SIGBUS, SIG_DFL); -// signal(SIGFPE, SIG_DFL); -// signal(SIGTERM, SIG_DFL); -// signal(SIGKILL, SIG_DFL); -// signal(SIGPIPE, SIG_DFL); -//} -// -// public class CopyCrashHandler { public class func getdataPath() -> String{ let str = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last! let urlPath = str.appending("Exception.txt") return urlPath + } + + public class func cleanCrashInfo() { + let path = CopyCrashHandler.getdataPath() + do{ + if FileManager.default.fileExists(atPath: path) { + try FileManager.default.removeItem(atPath: path) + } + }catch{ } + } + public class func setDefaultHandler() { NSSetUncaughtExceptionHandler { (exception) in let arr:NSArray = exception.callStackSymbols as NSArray @@ -95,8 +41,7 @@ public class CopyCrashHandler { } try url.write(toFile: path, atomically: true, encoding: String.Encoding.utf8) - }catch{ error - print("\(error)") + }catch{ } } }