1、SIGSEGV
#2284 SIGSEGV
segmentation violation
SIG 是信號(hào)名的通用前綴, SEGV 是 segmentation violation 的縮寫.
在 POSIX 兼容的平臺(tái)上畅涂,SIGSEGV 是當(dāng)一個(gè)進(jìn)程執(zhí)行了一個(gè)無效的內(nèi)存引用欲间,或發(fā)生段錯(cuò)誤時(shí)發(fā)送給它的信號(hào)。SIGSEGV 的符號(hào)常量在頭文件 signal.h 中定義垮耳。因?yàn)樵诓煌脚_(tái)上烘绽,信號(hào)數(shù)字可能變化淋昭,因此符號(hào)信號(hào)名被使用。通常安接,它是信號(hào)11翔忽。
對(duì)于不正確的內(nèi)存處理,如當(dāng)程序企圖訪問 CPU 無法定址的內(nèi)存區(qū)塊時(shí),計(jì)算機(jī)程序可能拋出 SIGSEGV。操作系統(tǒng)可能使用信號(hào)棧向一個(gè)處于自然狀態(tài)的應(yīng)用程序通告錯(cuò)誤盏檐,由此呀打,開發(fā)者可以使用它來調(diào)試程序或處理錯(cuò)誤。
在一個(gè)程序接收到 SIGSEGV 時(shí)的默認(rèn)動(dòng)作是異常終止糯笙。這個(gè)動(dòng)作也許會(huì)結(jié)束進(jìn)程贬丛,但是可能生成一個(gè)核心文件以幫助調(diào)試,或者執(zhí)行一些其他特定于某些平臺(tái)的動(dòng)作给涕。
SIGSEGV可以被捕獲豺憔。也就是說额获,應(yīng)用程序可以請(qǐng)求它們想要的動(dòng)作,以替代默認(rèn)發(fā)生的動(dòng)作恭应。這樣的動(dòng)作可以是忽略它抄邀、調(diào)用一個(gè)函數(shù),或恢復(fù)默認(rèn)的動(dòng)作昼榛。在一些情形下境肾,忽略 SIGSEGV 導(dǎo)致未定義行為。
一個(gè)應(yīng)用程序可能處理SIGSEGV的例子是調(diào)試器胆屿,它可能檢查信號(hào)棧并通知開發(fā)者目前所發(fā)生的奥喻,以及程序終止的位置。
SIGSEGV通常由操作系統(tǒng)生成非迹,但是有適當(dāng)權(quán)限的用戶可以在需要時(shí)使用kill系統(tǒng)調(diào)用或kill命令(一個(gè)用戶級(jí)程序环鲤,或者一個(gè)shell內(nèi)建命令)來向一個(gè)進(jìn)程發(fā)送信號(hào)。
在 POSIX 兼容的平臺(tái)上憎兽,SIGSEGV 是當(dāng)一個(gè)進(jìn)程執(zhí)行了一個(gè)無效的內(nèi)存引用冷离,或發(fā)生段錯(cuò)誤時(shí)發(fā)送給它的信號(hào)。SIGSEGV 的符號(hào)常量在頭文件 signal.h 中定義纯命。因?yàn)樵诓煌脚_(tái)上西剥,信號(hào)數(shù)字可能變化,因此符號(hào)信號(hào)名被使用亿汞。通常瞭空,它是信號(hào)11。
2留夜、NSInvalidArgumentException
#2332 NSInvalidArgumentException
*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[1]
Spring3G -[MWUncaughtExceptionHandler saveCrashToFile:]
使用category時(shí)有可能出現(xiàn)崩潰,因?yàn)閏ategory沒有被鏈接進(jìn)APP
解決辦法:
1. sdk
(1). 如果是三方SDK或者自己的工程图甜,則修改配置碍粥,"Building Settings" -> "Linking" -> "Other Linker Flags" 添加"-ObjC"
(2). 如果是自己開發(fā)的SDK,在修改 "Building Settings" -> "Linking" -> "Preform Single-Object Prelink"為"YES".使用SDK的APP就不需要做任何修改了
2. 對(duì)象被提前釋放
大部分情況下是因?yàn)閷?duì)象被提前release了黑毅,在你心里不希望他release的情況下嚼摩,指針還在,對(duì)象已經(jīng)不在了矿瘦。
解決辦法:檢查對(duì)象的引用計(jì)數(shù)的正確性
3.方法沒有實(shí)現(xiàn)
在我們開發(fā)過程中枕面,經(jīng)常修改方法名,可能出現(xiàn).h文件里修改缚去,但是.m文件里沒有修改潮秘,導(dǎo)致沒有對(duì)應(yīng)的實(shí)現(xiàn)。
3易结、NSGenericException
#48 NSGenericException(SIGABRT)
*** Collection <__NSCFDictionary: 0x12601fb90> was mutated while being enumerated.
CoreFoundation ___exceptionPreprocess
A generic name for an exception.
You should typically use a more specific exception name.
通用異常,當(dāng)沒有指定特定類型異常時(shí)會(huì)拋出通用異常枕荞。
You should typically use a more specific exception name.
通用異常,當(dāng)沒有指定特定類型異常時(shí)會(huì)拋出通用異常柜候。
注:本文摘抄于bugly