0

ゲームにクラッシュ バグがあり、長い間解明しようとしてきましたが、あまり進展がありませんでした。私はそれを引き起こすためのほとんど繰り返し可能な一連のステップを持っています.テザリング中にそれを再現することができ、それが起こる前に呼び出されたコードの最後のビットを見つけました. ブレーク ポイントを設定して、それをステップ実行しました... しかし、クラッシュが発生すると、それは常にアセンブリ内にあり、クラッシュ レポートは常に実行ループ内から来るように見えますが、これはあまり役に立ちません。

バグを再現する方法は次のとおりです(約1/3の時間)...

ゲームのレベル選択画面に入り、シーンの 4/5 レベルが完了します。レベル セレクターは 5 番目のレベルにあります。すぐにレベル 4 を選択します。セレクター リングがレベル 4 のバブルに移動し、約 1/3 の時間で... レベル 5 のバブルが明白な理由もなく消え、ゲームがクラッシュします。

最も苛立たしいことの 1 つは、常に同じクラッシュ レポートが返されるとは限らないことです。登場する2つの異なるバージョンがあります。

私はかなり困惑しているので、誰かがこれを手伝ってくれることを願っています。

これは最初のものです:

Error Message:
Segmentation fault: 11: Application recieved signal

Where:
Tilt, line 0

Backtrace:
Tilt:0:in `0x00086bdf ht_handle_signal + 102'
libsystem_c.dylib:1:in `0x32cf87ed _sigtramp + 48'
UIKit:2:in `0x334e0105 __38-[UIView(Geometry) hitTest:withEvent:]_block_invoke_0 + 80'
CoreFoundation:3:in `0x358e77e3 __NSArrayChunkIterate + 318'
CoreFoundation:4:in `0x358e06ff __NSArrayEnumerate + 570'
CoreFoundation:5:in `0x35845ed5 -[NSArray enumerateObjectsWithOptions:usingBlock:] + 64'
UIKit:6:in `0x33338339 -[UIView(Geometry) hitTest:withEvent:] + 668'
UIKit:7:in `0x334e0127 __38-[UIView(Geometry) hitTest:withEvent:]_block_invoke_0 + 114'
CoreFoundation:8:in `0x358e77e3 __NSArrayChunkIterate + 318'
CoreFoundation:9:in `0x358e06ff __NSArrayEnumerate + 570'
CoreFoundation:10:in `0x35845ed5 -[NSArray enumerateObjectsWithOptions:usingBlock:] + 64'
UIKit:11:in `0x33338339 -[UIView(Geometry) hitTest:withEvent:] + 668'
UIKit:12:in `0x334e0127 __38-[UIView(Geometry) hitTest:withEvent:]_block_invoke_0 + 114'
CoreFoundation:13:in `0x358e77e3 __NSArrayChunkIterate + 318'
CoreFoundation:14:in `0x358e06ff __NSArrayEnumerate + 570'
CoreFoundation:15:in `0x35845ed5 -[NSArray enumerateObjectsWithOptions:usingBlock:] + 64'
UIKit:16:in `0x33338339 -[UIView(Geometry) hitTest:withEvent:] + 668'
UIKit:17:in `0x334e0127 __38-[UIView(Geometry) hitTest:withEvent:]_block_invoke_0 + 114'
CoreFoundation:18:in `0x358e77e3 __NSArrayChunkIterate + 318'
CoreFoundation:19:in `0x358e06ff __NSArrayEnumerate + 570'
CoreFoundation:20:in `0x35845ed5 -[NSArray enumerateObjectsWithOptions:usingBlock:] + 64'
UIKit:21:in `0x33338339 -[UIView(Geometry) hitTest:withEvent:] + 668'
UIKit:22:in `0x33337ee7 +[UIWindow _hitTestToPoint:pathIndex:forEvent:] + 314'
UIKit:23:in `0x3331ed43 _UIApplicationHandleEvent + 1226'
GraphicsServices:24:in `0x374df22b PurpleEventCallback + 882'
CoreFoundation:25:in `0x358c0523       __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 38'
CoreFoundation:26:in `0x358c04c5 __CFRunLoopDoSource1 + 140'
CoreFoundation:27:in `0x358bf313 __CFRunLoopRun + 1370'
CoreFoundation:28:in `0x358424a5 CFRunLoopRunSpecific + 300'
CoreFoundation:29:in `0x3584236d CFRunLoopRunInMode + 104'
GraphicsServices:30:in `0x374de439 GSEventRunModal + 136'
UIKit:31:in `0x3334ecd5 UIApplicationMain + 1080'
Tilt:32:in `0x000025df main + 98'
Tilt:33:in `0x00002578 start + 40'

そして、これが2つ目です。

Error Message:
Segmentation fault: 11: Application recieved signal

Where:
Tilt1Scene, line 0

Backtrace:
Tilt1Scene:0:in `0x00087a6f ht_handle_signal + 102'
libsystem_c.dylib:1:in `0x33da17ed _sigtramp + 48'
QuartzCore:2:in `0x3540bfd3   _ZN2CA5Layer19collect_animations_EdPdPNS0_21CollectAnimationsDataE + 290'
QuartzCore:3:in `0x3540bfd3 _ZN2CA5Layer19collect_animations_EdPdPNS0_21CollectAnimationsDataE + 290'
QuartzCore:4:in `0x3540bfd3 _ZN2CA5Layer19collect_animations_EdPdPNS0_21CollectAnimationsDataE + 290'
QuartzCore:5:in `0x3540bfd3 _ZN2CA5Layer19collect_animations_EdPdPNS0_21CollectAnimationsDataE + 290'
QuartzCore:6:in `0x3540bfd3 _ZN2CA5Layer19collect_animations_EdPdPNS0_21CollectAnimationsDataE + 290'
QuartzCore:7:in `0x3540bfd3 _ZN2CA5Layer19collect_animations_EdPdPNS0_21CollectAnimationsDataE + 290'
QuartzCore:8:in `0x3540bead _ZN2CA5Layer18collect_animationsEPNS_11TransactionEdPd + 56'
QuartzCore:9:in `0x35405b97 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 1078'
QuartzCore:10:in `0x3540557f _ZN2CA11Transaction6commitEv + 314'
QuartzCore:11:in `0x353fd4b9 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 56'
CoreFoundation:12:in `0x31560b1b __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 18'
CoreFoundation:13:in `0x3155ed57 __CFRunLoopDoObservers + 258'
CoreFoundation:14:in `0x3155f0b1 __CFRunLoopRun + 760'
CoreFoundation:15:in `0x314e24a5 CFRunLoopRunSpecific + 300'
CoreFoundation:16:in `0x314e236d CFRunLoopRunInMode + 104'
GraphicsServices:17:in `0x329bb439 GSEventRunModal + 136'
UIKit:18:in `0x317e7cd5 UIApplicationMain + 1080'
Tilt:19:in `0x000030c7 main + 98'
Tilt:20:in `0x00003060 start + 40'
4

1 に答える 1

0

上記の WDUK のヘルプに基づいて、この質問に対する回答を見つけました。

この問題は、画面上の UIButton の 1 つが自動解放されたことが原因でした。これは、保持されている別のプロパティ currentSelectedLevelButton があるために発生していました。ただし、コードの一部で、self.currentSelectedLevelButton の代わりに currentSelectedLevelButton を設定していました。プロパティをセッターとして使用していなかったため、プロパティの保持部分は使用されず、後で自動解放されました。それを修正するには、currentSelectedLevelButton を設定していたすべての場所を見つけて、それを self.currentSelectedLevelButton に変更する必要がありました。

于 2012-06-11T21:41:31.717 に答える