XCode Debug 模式斷言擒 bug 記

2021-08-26 19:00:18 字數 1855 閱讀 4022

認識到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等可能是公司內部的一套資訊管理平台,畫圖時分開便於理解...