認識到debug模式和斷言帶來的方便,我迫不及待地便將專案的schema重新設定回了debug模式
以前不懂,認為程式在發布的時候用的是release模式,為了降低發布時出現bug的機率,
便很早前就將程式設定為debug模式。
現在看來真是愚蠢之極。
不知道有多少次,我在除錯bug的時候,判斷空指標用了如下的**
if(var == nil) }
也就是說,有乙個節點在被新增的時候,他的parent成員變數已經不為 nil 了(說明他已經被新增過一次了)~
開始我沒有暴力調,在上述方法裡面下了個斷點。
我的想法是在爆出錯誤的時候,在 by thread 裡面走回錯誤報出的上一級方法。
我如願以償,找到了錯誤丟擲的上一級方法。
但是,很不幸的是xcode所提示的**行數總會有一些出入,我被暗算好幾次了~
這次我有了經驗,沒有在讓我想不通的地方多做停留
(實際上有時候xcode所定位到出的bug拋出行數非常的不準確,稍作檢查發現並無問題之後千萬不要再多浪費時間)
很果斷的便在bug可能出現的方法裡面加了10數句 nslog,直接便進入 暴力除錯的環節了
暴力調雖然有點機械,顯得蠢,但目前對我來說還是相當有效的。。
2012-03-14 14:14:11.322 gamesceneex[26517:707] cocos2d: su***ce size: 960x640
2012-03-14 14:14:11.362 gamesceneex[26517:707] 11
2012-03-14 14:14:11.366 gamesceneex[26517:707] 22
2012-03-14 14:14:11.369 gamesceneex[26517:707] 33
2012-03-14 14:14:11.378 gamesceneex[26517:707] 44
2012-03-14 14:14:11.399 gamesceneex[26517:707] 55
2012-03-14 14:14:11.414 gamesceneex[26517:707] 66
2012-03-14 14:14:11.453 gamesceneex[26517:707] 77
2012-03-14 14:14:11.456 gamesceneex[26517:707] 88
2012-03-14 14:14:11.473 gamesceneex[26517:707] 99
2012-03-14 14:14:11.476 gamesceneex[26517:707] 10
2012-03-14 14:14:11.573 gamesceneex[26517:707] 11
2012-03-14 14:14:11.595 gamesceneex[26517:707] 12
2012-03-14 14:14:11.600 gamesceneex[26517:707] *** assertion failure in -[cclayer addchild:z:tag:], /users/user/documents/gamescene/libs/cocos2d/ccnode.m:383
果不其然,很快我便定位到 bug 丟擲的準確位置了,以下貼出 bug出現的那個方法:
ok,收工!
XCode Debug 模式斷言擒 bug 記
認識到debug模式和斷言帶來的方便,我迫不及待地便將專案的schema重新設定回了debug模式 以前不懂,認為程式在發布的時候用的是release模式,為了降低發布時出現bug的機率,便很早前就將程式設定為debug模式。現在看來真是愚蠢之極。不知道有多少次,我在除錯bug的時候,判斷空指標用了...
eager模式造成的bug
在 tensorflow1.x 版本中,可以通過命令 tf.enable eager execution 開啟eager模式,但是在該模式下,使用 tf.keras.layers.input 會遇到問題 import tensorflow as tf tf.enable eager executio...
網遊運營中的外掛程式與bug處理模式
基本上此類問題依靠兩個主要渠道 1.玩家舉報,走客服路徑,客服扮演事件與問題管理的角色,問題一旦轉入研發則進入公司內部流程,在客服 運維 研發 產品等職能前顯示流程狀態和全程監控 在實際的環境中客服的事件,問題管理平台與後面的工作流平台,以及bi等可能是公司內部的一套資訊管理平台,畫圖時分開便於理解...