0

私は iPhone アプリに取り組んでいますが、コンパイラに問題があります。ここにローダウンがあります:

  1. iOS 4.0 を対象として、Xcode 3.2.3 を使用してコンパイルしています。私のデバイスは、iOS 4.0 を実行する第 2 世代の iPod touch です。
  2. GCC 4.2 でのコンパイル: シミュレーターとデバイスの両方で動作します
  3. LLVM コンパイラ 1.5 でのコンパイル: シミュレータでは動作しますが、デバイスでは動作しません。
  4. LLVM GCC 4.2 でのコンパイル: LLVM コンパイラ 1.5 と同じ問題。

失敗すると、アプリの読み込みが完了することさえありません。ログは次のようになります。

run
Running…
[Switching to thread 11523]
[Switching to thread 11523]
sharedlibrary apply-load-rules all
continue
Program received signal:  “EXC_BAD_ACCESS”.
warning: check_safe_call: could not restore current frame

warning: Unable to restore previously selected frame.
warning: Unable to restore previously selected frame.
warning: Unable to restore previously selected frame.
warning: Unable to restore previously selected frame.
warning: Unable to restore previously selected frame.

これで何が起こっているのかわかりません。WWDC で発表された最新の機能 (暗黙的、カテゴリにインスタンス変数を追加する機能など) を使用するようにコードを更新したいのですが@synthesize、そのためには Clang が必要です。

4

1 に答える 1

3

何かがメモリにうんざりしているように見えます。より具体的には、スタック上。

LLVM と GCC のコード生成には、まったく微妙ではありますが、かなり重要な違いがいくつかあります。LLVM-GCC は実際には GCC->LLVM であることに注意してください。つまり、LLVM コード生成エンジンに供給する GCC パーサーです。

したがって、あなたは素敵なエッジケースに遭遇したと思います。LLVM の codegen のバグか、この種のクラッシュとして現れるプログラムのバグです。

頭のてっぺんから、ブロックをコピーして別のスレッドでそのブロックを実行することに失敗すると、このようなクラッシュとして現れるかもしれないと想像できました。

いずれにせよ、可能であればバグを報告してください。

于 2010-07-19T04:34:06.560 に答える