在eclipse調試器中是否有某種方法來確定它所查看的特定指針是否爲空,而不應該是這樣?
這裏的答案是肯定的,並沒有號:你不能告訴Eclipse來指定在檢查null這指針。當你在課堂上或功能上被打破時,你所能做的就是看指針本身。 是的:所有你需要做的就是拆分你的電話,你可以找到對象。例如,在問題代碼似乎是:
_currentGraphic.getCoordinates().setX((int) event.getX() - _currentGraphic.getGraphic().getWidth()/2);
你會拆分此成(原諒假,但我不知道您正在使用哪種類型):
Type _coords = _currentGraphic.getCoordinates();
Type _graphic = _currentGraphic.getGraphic();
Type _width = _graphic.getWidth();
_coords.setX((int) event.getX() - _width/2);
現在,這行代碼被分解成每行一個對象,很容易確定哪個是違規者。
爲什麼斷點被忽略?
這一個有點複雜。您的斷點可能會或可能不會被忽略。一般來說,如果你正在達到一個斷點,它應該依次達到所有這些斷點。但是,在Eclipse中,我注意到有時在某些情況下忽略斷點。出於某種原因,adb沒有完全與Eclipse調試器集成。這意味着如果您在當前正在運行的調試中更改斷點,它可能會或可能不會識別它們。通常完全殺死該應用程序並重新啓動它就足夠了。
此外,有時adb和調試器不能正確同步。你可以使用一個命令(最好在你的代碼的開頭),這個命令可以很好地幫助你。如果插入命令Debug.waitForDebugger()
,則同步將到位,允許最早的斷點(第一個onCreate()和類似的那些斷點)正常工作。該命令確實讓你調試速度慢得多。在關鍵點使用這一點也將減輕忽略前面討論的公然斷點。
現在需要注意的是,僅僅因爲你認爲它忽略了它們,並不意味着它是。有時(尤其是在Android的情況下),執行不一定會經過開發人員認爲的那樣。例如,可以在構造函數ViewClass(Context context)
中設置一個斷點,實際上它是通過構造函數ViewClass(Context context, AttributeSet attr)
通過XML創建的。哎呀,即使是一個被遺忘的對象創建,也可能以錯誤的方式完全控制執行。如果對象具有static
成員或在類初始化(不是對象初始化)上運行的代碼,則這可能尤其如此。不看你的代碼,我不能說發生了什麼,但希望這給你找到你的答案的工具。
希望這有助於
FuzzicalLogic
您可以一步通過與Eclipse調試器的代碼,檢查,看看有什麼變量爲空,或者您可以使用放在上述錯誤一個println語句,(S)看什麼變量實際上是空的。 – 2012-01-15 01:00:50
默認調試器沒有辦法簡單地看到它認爲是空的嗎?這在調試接口方面似乎是一個巨大的疏忽,所以如果沒有辦法簡單地存儲導致異常顯示給開發人員的調用,那麼必定有一個原因。 – Xantham 2012-01-15 01:04:59
如果您在此處逐步完成代碼並觀察重要變量,那麼Eclipse調試器將顯示爲空。我根本沒有看到任何疏忽。 – 2012-01-15 01:08:11