2011-10-14 6 views
5

私のアプリでクラッシュが報告されたのは、Crash Pad Drumsです。 iPod 4にクラッシュを引き起こす特定のシンバル音に問題があると指摘しています。私はiPod touch 2でクラッシュを見つけることができません。iTouch 4はありません。iPhone - 見つからないときのクラッシュのデバッグ

どうしたらいいですか?

私のアプリは今日無料です。誰かがそれをダウンロードしてクラッシュの状況を見つけることができれば、私はあなたの借金に入るだろう。

EDIT: 明確化

私がテストする新しいデバイスを持っていないとして、私は実際にクラッシュを引き起こすことができません。私はそれが私が今見ているiOS 5の問題だと思うが、私は安くて新しいiTouchを購入したくない場合、どうすればいいだろうか?

EDIT:

Console log: 
2011-10-14 23:08:25.797 Crash Pad[794:12203] -[NSConcreteValue doubleValue]: unrecognized selector sent to instance 0xec9e2e0 
2011-10-14 23:08:25.798 Crash Pad[794:12203] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSConcreteValue doubleValue]: unrecognized selector sent to instance 0xec9e2e0' 
*** First throw call stack: 
(0x1c49052 0x21fdd0a 0x1c4aced 0x1baff00 0x1bafce2 0x16f4f0 0x15d99e 0x14e0d8 0x168d42 0x15ace2 0x5c28c7 0x5c2a31 0x5c2d45 0x1be0f4a 0x1bac665 0x1bac056 0x5c2c43 0x249c8 0x24a58 0x8a72 0x1c4aec9 0x67a299 0x67a306 0x1c4aec9 0x67a299 0x67a306 0x5b6a30 0x5b6c56 0x59d384 0x590aa9 0x28c3fa9 0x1c1d1c5 0x1b82022 0x1b8090a 0x1b7fdb4 0x1b7fccb 0x28c2879 0x28c293e 0x58ea9b 0x1f0d 0x1e85) 
terminate called throwing an exceptionCurrent language: auto; currently objective-c 
+4

おそらく、アプリケーションの名前を変更しますか?ごめんなさい。抵抗することができません... –

+1

笑。あなたにはポイントがありますが、潜在的に危険な名前です。そしてクラッシュパッドのクラッシュシンバルでクラッシュが見つかった... LOL。 –

+0

また、この質問には何が悪いですか? -1? –

答えて

12

あなたが見つけたのはAppleのバグです。次のようなビューをアニメーション化すると簡単に再現できます。

CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 
anim.duration = 0.2; 
anim.repeatDuration = HUGE_VALF; 
anim.autoreverses = YES; 
anim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.9, 0.9, 0.0)]; 
[view.layer addAnimation:anim forKey:@"throb"]; // if this isn't nil we crash on tap 

プロジェクトを実行します。揺れ動くビューをタップします。クラッシュ。このコードは、iOS 3とiOS 4ではまったく問題ありませんでした。今の回避策は、forKey:をnilに設定することですが、この引数は重要な意味を持つ可能性があります。非ゼロのキーとは、同じキーですが、このアニメーションは削除されています。これはまさにあなたがしようとしていたものかもしれません。

私はAppleにバグレポートを提出しました。同じことをお勧めします。

EDIT(2/3/12):はい、アップルは、これは私のバグではなく、そのバグだと言います。私は変換を提供しているので、@"transform"のキーを使用する必要があります。@"transform.scale"ではありません。さらに、私の3Dスケール変換のz値は0ではなく1でなければなりません。

+0

バグを投稿してください。 – bbum

+0

@bbum - これは10642040です。興味をお寄せいただきありがとうございます! – matt

+0

それは私が持っていた問題で、CATransformとすべてを自動再現しています。私だけではありませんでしたが、うれしかったですが、アニメーションブロック全体に変更する前に、forKeyをnilに設定してみてください。 –

4

クラッシュログまたはあなたが投稿できる2を持っていますか?それは助けになるだろう。

古いものではなく新しいハードウェアでクラッシュすると、メモリ関連の問題ではありそうにありません。おそらく、それはスレッディングに関連するタイミングの問題です。速いデバイスは早く何かを取得し、データ構造に触れてから、何か他のことが行われる前に触れます。音の再生が異なるデバイス間で一定の持続時間であることを考えると、この理論にはさらに信憑性がある。

+0

クラッシュのgdb出力を –

+0

@bbumに追加しました。これはiOS 5で導入されたAppleのバグです。私はバグレポートを提出しました。 OPの質問に対する私の答えを見てください。 – matt

+0

優れています。ファイルをありがとう。 – bbum

7

デバッガにNSZombieEnabledMallocStackLogging、およびguard mallocを設定します。そして、あなたのアプリケーションがクラッシュし、GDBコンソールで次のように入力します。

(gdb) info malloc-history 0x543216 

クラッシュの原因となったオブジェクトのアドレスに0x543216置き換え、そしてあなたがはるかに便利なスタックトレースを取得し、それはあなたがピンポイントで役立つはずです問題の原因となっているコードの正確な行。

0

これはiOS 5の問題となりました。さまざまなコードをコメントアウトすることで、クラッシュの原因を絞り込むことができました。疑わしいときは、コメントアウトしてください。

+2

あなたはその答えを拡大できますか?どのようにコードを変更しましたか?私はiOS 5で同じ問題を抱えています。 – matt

+0

私は原因がかなり恣意的だと​​思う - いくつかのものはiOS 5で競合するようです - しかし、私はCAKeyframeAnimationのものをアニメーションブロックに変更しました。 –

+1

はい、クラッシュにはCAAnimationも関係しています。しかし、以前のシステムではクラッシュしませんでした。私はアニメーションブロックを使ってその問題を回避できることを発見しましたが、私はそれをしたくありませんでした。奇妙なことに、解決法は、 'addAnimation:forKey:'でnilキーを使うことでした。 - これを確認していただきありがとうございます。 – matt

関連する問題