愚蠢的調試 一,愚蠢調試

來源:互聯網
上載者:User

愚蠢的調試 一,愚蠢調試

      就在昨天,通過企業id發布了公司使用的一個iOS app 由於在真機調試沒有發現問題。就直接替換了線上的檔案。但是通過下載安裝發現,開啟程式後閃退,而且是每次都出現,這就讓我感到非常迷茫,真機調試都是沒問題的,為什麼會出現如此嚴重的bug。立刻iPhone串連orgnizer。查看device logs 發現都是bad access錯誤,控制台也出現了Could not lookup ReleaseType from system version dictionary錯誤,我先檢查了bad access定位的代碼,沒有發現問題。然後就尋找releasetype的問題,對於這個問題網上相關資料很少,也沒能幫我解決問題。我就繼續從代碼入手。發現都是與dispatch_queue 有關,我就把關於他的很多資料看了一遍,由於我是iOS5編譯,iOS6運行,我就懷疑與dispatch_queue在5 6上的arc差異造成,然後從這個方向入手繼續追查(其實我走錯了道,後面說)。不斷修改相關代碼,重新發布,安裝運行。由於通過xcode安裝是沒有任何問題的,因此只能這樣調試。折騰下來,問題依舊。然後就在網上搜尋所有相關資料。到了12點我依然沒有解決問題。只能洗洗睡了,早上起來,腦子清醒了許多,拋棄了昨晚所有的想法,直接從代碼入手,一句句注釋掉代碼,然後調試。仔細的檢查代碼。最終發現while 迴圈在應該退出的地方沒有退出,會不會是這裡的問題呢。修改之後,發布測試。一切正常。果然問題是這裡造成的,至於為什麼死迴圈在debug階看不到問題,我現在還沒有明白。

 

推薦一個關於 iOS Device logs調試的文章:

 http://www.raywenderlich.com/23704/demystifying-ios-application-crash-logs

 

總結一下這次的經曆:

1,這是一個愚蠢的bug。 while 死迴圈。測試沒問題不代表發布的沒問題,因為還有可能存在不同機型有不同的問題。

2,上線發布沒有備份線上版本,造成我只能恢複最老的版本。以後不管什麼情況的更新都要做到本分前一個版本。

3,由於沒有備份 + debug沒有問題,造成我心裡緊張,慌亂之下找問題跑偏了方向,造成很多時間的浪費。一定要淡定,否則就亂套了,腦子也就不好使了。

4,沒有仔細檢查代碼,否則早就搞定了。雖然第一次仔細檢查了,但是不全面。仔細檢查包括全面細緻。

5,出現 Could not lookup ReleaseType from system version dictionary 錯誤 可能是由於代碼問題造成。

6,dispatch_release 在 iOS6 arc下不需要使用了,但是在 iOS6以前的版本arc中需要 http://stackoverflow.com/questions/8618632/does-arc-support-dispatch-queues

 

為什麼是一,因為以後還有可能有別的愚蠢出現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.