2011-11-15 9 views
0

通常、BAD_ACCESSエラーを修正しようとすると、Xcode Instrumentsを開き、エラーを引き起こすゾンビを見つけるためにテストします。Xcodeの機器がBAD_ACCESSのゾンビを検出しない

私はiPhone 5.0シミュレータでアプリケーションを実行しています。 BAD_ACCESSで停止しますが、Instrumentsはゾンビにフラグを立てません。

iPhone 4.3シミュレータでアプリを実行したときの動作はまったく異なります。この場合、アプリケーションはBAD_ACCESSを使用せずに正常に実行されます。

私はXCode 4.2を使用しています。

何が起こっている可能性がありますか?ここで

はバックトレースです:

(gdb) bt 
#0 0x0167209b in objc_msgSend() 
#1 0x00002ff2 in -[BSViewController viewDidAppear:] (self=0x1, _cmd=0x12ddd81, animated=1 '\001') at BSViewController.m:42 
#2 0x012616f8 in __CFStringAppendFormatCore() 
#3 0x011acb6c in _CFStringCreateWithFormatAndArgumentsAux() 
#4 0x0122bce8 in _CFLogvEx() 
#5 0x00b26b63 in NSLogv() 
#6 0x00b26ad5 in NSLog() 
#7 0x00009ffc in -[BSCTView buildFrames] (self=0x6a55f80, _cmd=0xd541) at BSCTView.m:96 
#8 0x0000a5da in -[BSCTView layoutSubviews] (self=0x6a55f80, _cmd=0x66a6c4) at BSCTView.m:124 
#9 0x001ff301 in -[UIView(CALayerDelegate) layoutSublayersOfLayer:]() 
#10 0x01284e72 in -[NSObject performSelector:withObject:]() 
#11 0x0283592d in -[CALayer layoutSublayers]() 
#12 0x0283f827 in CA::Layer::layout_if_needed() 
#13 0x027c5fa7 in CA::Context::commit_transaction() 
#14 0x027c7ea6 in CA::Transaction::commit() 
#15 0x0285330c in +[CATransaction flush]() 
#16 0x001bf4c6 in -[UIApplication _reportAppLaunchFinished]() 
#17 0x001bfbd6 in -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:]() 
#18 0x001ce743 in -[UIApplication handleEvent:withNewEvent:]() 
#19 0x001cf1f8 in -[UIApplication sendEvent:]() 
#20 0x001c2aa9 in _UIApplicationHandleEvent() 
#21 0x01748fa9 in PurpleEventCallback() 
#22 0x012571c5 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__() 
#23 0x011bc022 in __CFRunLoopDoSource1() 
#24 0x011ba90a in __CFRunLoopRun() 
#25 0x011b9db4 in CFRunLoopRunSpecific() 
#26 0x011b9ccb in CFRunLoopRunInMode() 
#27 0x001bf2a7 in -[UIApplication _run]() 
#28 0x001c0a9b in UIApplicationMain() 
#29 0x000027a0 in main (argc=1, argv=0xbffff578) at main.m:16 
+1

「EXC_BAD_ACCESS」は、さまざまなエラーの可能性があります。そのうちの1つだけがゾンビオブジェクトです。コードなしでは、言うことは不可能です。エラーが発生したときのスタックトレースとは何ですか? –

+0

はい、私はコードがなくても言い難いことを知っていますが、ここでコピーするコードは非常に大きく、BAD_ACCESSはあまり言わない場所で起こります。バックトレースを追加する質問を編集しています。 – javsmo

+0

うわー、 'self = 0x1'は非常に壊れた状態です(re:line#1)。 – Richard

答えて

5

としては、質問のコメントに、EXC_BAD_ACCESSはゾンビではない他の多くのものが原因で発生することができ、@AdamRosenfieldすることにより、上記と述べました。

@"%@"を予期し、パラメータとしてintを受信して​​いたフォーマット文字列の問題がNSLog()であり、例として以下のようになりました。

int variable = 1; 
NSLog(@"%@", variable); 

これはEXC_BAD_ACCESSの原因です。

バックトレースを読んだ後、私はその行を見て#6となり、コードでNSLog()の呼び出しがすべて検索され、最終的にエラーのあるものが見つかりました。

関連する問題