[問題] 遇到Crash時,除錯的流程
前言:
想了解大家在處理crash問題時,
思路大約都是哪些方向,
希望能了解原理,這樣遇到問題時,才不會不知道怎麼辦。
下面先列出我想了解的問題,
以及我對此問題的想法,
希望有大大能幫我檢查是否有錯誤觀念,並幫我補完完整觀念‧
ps. 環境是ipad,不是iphone‧
版本是ios 6。
(以前的版本沒有auto reference counting(ARC)?)
(iphone跟ipad的autorelease pool有不同使用需求? 有ARC後還有差別?)
問題一:
會造成crash的主因有哪些?
問題二:
必定會crash的流程,可能的情形有哪些?解決的方式?
問題三:
不一定會crash的流程,可能的情形有哪些?解決的方式?
===
我知道的:
呼叫已經free掉的物件必定會crash掉。
例如某個button的TouchUpInside事件裡,
{
UIViewController *pView;
[self presentViewController:pView animated:YES completion:nil];
}
因為pView只存在這個function裡,
去執行presentViewController就會造成crash。
因為當view didload時,該view就被free了。
解決的方式是在.h檔裡宣告全域變數,這樣才不會執行完button事件,ViewController就被free掉了。
我不知道的:
若檔案A裡,有button event會presentViewController 檔案B,
而檔案B裡,也有button event會presentViewController 檔案C,
(就是A->B->C)
此時檔案C裡,有button event會直接返迴檔案A,
[self.presentingViewController.presentingViewController dismissModalViewControllerAnimated:YES];
檔案B跟C有使用AVPlayer,在畫面一直切換的情況下,
可能會在檔案B的presentViewController那行Crash,
也可能會在檔案C,dismiss那行Crash,
這種不穩定的狀況,發生原因可能是什麼?
因為dissmiss造成memory leak嗎?
在擁有實機,可以看到error msg,以及machine code的情況,
我可以檢查什麼來判斷問題?
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.24.71.234
推
08/07 09:51, , 1F
08/07 09:51, 1F
推
08/07 15:43, , 2F
08/07 15:43, 2F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章