解決第乙個crash

2022-07-14 08:33:10 字數 1111 閱讀 8076

除錯程式出現異常,用debug看到的是空指標異常。debug真的好用啊,

沒有它還真不行。但是**出現的空指標?通過斷點跟蹤,沒有找

到**行。可能斷點的地方設定不對。

出現問題的時候,求助於網路是個很好的方法。看了很多帖子,覺得

乙個帖子比較符合我遇到的情況。這個帖子分析了應用crash的三種情況,

其中一條「物件為空」和我的情況比較類似。

為了排查那個物件為空,我採用了一種最笨的方法,就是隔離**。

具體來說,按照執行的次序,注釋掉部分後執行的**,保留前半

部分的**。因為**不多,所以,這個方法適用,而且還比較有效。

這樣的「二分法」,使我很快的定位了問題出在什麼地方。原來,是乙個、

呼叫findviewbyid(r.laytou.image_view)返回了乙個空的指標。循著這個線索,

根據我對於語言的理解,我推測肯定是這個imageview物件沒有初始化。

再仔細看看我的**,發現我在定義私有變數mimageview的時候,就調

用了findviewbyid,可是,此時是編譯時,引數image_view這個xml中描述

的物件可能沒有初始化。根據我的經驗,我覺得系統可能是在當前的

繼承於activity類的類的物件在初始化oncreate的時候,會解析xml檔案,

然後,根據裡面的view等空間做初始化。而私有變數應該是在這之前。

於是,我在類中只生命乙個imageview的私有變數,但是,並不定義,也

不賦值。而賦值是寫在oncreate函式裡面,並且在setcontentview之後。

因為,我確信,setcontentview肯定對於imageview控制項進行了初始化。

這麼一改之後,果然ok了。

回憶起來,寫**的時候有些想當然了,沒有分析物件的生存期。

不過,在問題解決之後,感覺經驗值提公升了。還是那句話,遇到問題

不是壞事,經驗就在乙個個問題之後增長。

雖然現在按說已經是春天了,但是天氣依然寒冷,昨天還下雪籽,這是

春天麼?窗外北風的呼嘯,讓人不寒而慄。而我的手也凍得冰冷。但是,

直到停下來,我才發覺。這可能就是程式設計師的生活?鄙視也罷,欣賞也

好,它就真實的存在於這個世界裡面。

python第乙個程式設計 第乙個 Python 程式

簡述 安裝完 python 後,windows 中 開始選單或安裝目錄下就會有 idle 開發 python 程式的基本 ide 整合開發環境 幫助手冊 模組文件等。linux 中 只需要在命令列中輸入 python 命令即可啟動互動式程式設計。互動式程式設計 互動式程式設計不需要建立指令碼檔案,是...

第乙個部落格

我不知道為什麼 我在csdn上創了乙個賬號,又開通了部落格。也許我不是名人,也許幻想著成為名人。在這裡 我不會給任何人許諾,這個部落格可能有乙個博文 有兩個博文 或者會有很多 很多 很多。不過讓我有個大膽的猜想,如果這個部落格在今後有很多很多自己寫的博文,說明我成功了 在自己眼裡 也說明這個方法時正...

第乙個爬蟲

很多人學習python的目的就是為了學習能夠實現爬蟲的功能,這裡,我使用了scrapy框架來實現了乙個簡單的爬蟲功能,這裡我簡單的介紹一下scrapy專案的建立,和執行。1,第一步是安裝scrapy,我相信到了這一步,大多數人都已經會安裝第三方庫檔案了,這裡主要是使用命令pip install sc...