在開(kāi)發(fā)中經(jīng)常會(huì)遇到項(xiàng)目沖突肾档, 程序崩潰黍瞧,Xcode異常等情況,有些問(wèn)題第一次遇到時(shí)基本上就懵了,下面就來(lái)總結(jié)下常見(jiàn)的異常解決方案查乒。
第一種 排除SVN沖突
在團(tuán)隊(duì)開(kāi)發(fā)中盯拱,SVN沖突是最常見(jiàn)的了盒发,程序異常時(shí)查看SVN文件沖突基本上成了本能。
首先狡逢,右鍵主項(xiàng)目文件即xcodeproj文件宁舰,顯示包內(nèi)容,用文本編輯器查看包里的project.pbxproj奢浑,查找文件里是否有“<<<<<“ “=======”字符蛮艰,有的話即表示沖突,刪除沖突的地方即可解決雀彼。
此種異常一般就是程序無(wú)法運(yùn)行壤蚜,或是無(wú)法提交SVN等即寡。在異常情況下算是小case了。
第二種 匪夷所思的頻繁崩潰
向這種頻繁崩潰的情況袜刷,直接暴力解決嘿悬。
首先右鍵主項(xiàng)目文件即xcodeproj文件,顯示包內(nèi)容水泉。找到找到project.xcworkspace文件善涨,右鍵顯示包內(nèi)容。
刪除xcuserdata文件夾草则,解決钢拧。
xcuserdata文件夾里保存著當(dāng)前項(xiàng)目的一些臨時(shí)信息,很多崩潰其實(shí)是加載失敗導(dǎo)致的炕横,刪除這個(gè)文件夾源内,Xcode會(huì)重新布局加載信息。如此崩潰就解決了份殿。
小知識(shí)膜钓,程序崩潰的處理
程序在崩潰的時(shí)候,xcode經(jīng)常沒(méi)有給出準(zhǔn)確的堆棧信息卿嘲,而是定位在了main方法里颂斜,這個(gè)讓人很是頭疼,這個(gè)可以通過(guò)添加一個(gè)Exception Breakpoint拾枣,選擇 All來(lái)解決沃疮。另一種是Crash,EXC_BAD_ACCESS ,這個(gè)比較頭疼,因?yàn)镃rash的時(shí)候梅肤,可能是比較早之前的某個(gè)變量釋放了司蔬,現(xiàn)在訪問(wèn)時(shí)出問(wèn)題。Console里也沒(méi)顯示什么日志姨蝴。開(kāi)Scheme選項(xiàng)選擇Edit Scheme然后按圖勾上Enable Zombie Objects 和Malloc Stack那兩項(xiàng)俊啼,記住一般只有在定位EXC_BAD_ACCESS時(shí)候才勾選。
重新跑一下左医,如果是到Exception Breakpoint處停止了授帕,可以在Console中輸入:c(continue)按回車?yán)^續(xù)跑,直到Crash炒辉『朗看下Console是不是有跟SIGABRT類似的錯(cuò)誤信息日志了。如果還沒(méi)有日志黔寇,在Console中輸入
po $eax
$eax標(biāo)志出錯(cuò)的地方偶器,適用模擬器,真機(jī)用$r0(話說(shuō)EXC_BAD_ACCESS這種 錯(cuò)誤模擬器定位就行),“$eax”是cup的一個(gè)寄存器。在一個(gè)異常的情況下屏轰,這個(gè)寄存器將會(huì)包含一個(gè)異常對(duì)象的指針颊郎。注意:$eax只會(huì)在模擬器里面工作,假如你在設(shè)備上調(diào)試霎苗,你將需要使用”$r0″寄存器姆吭。還可以輸入比如:
po [$eax name]
po [$eax reason]
等指令查看錯(cuò)誤其他信息(注意方括號(hào)后沒(méi)分號(hào)的)。