2010-07-19 6 views
0

Я работаю над iPhone-приложением, и у меня возникают проблемы с компилятором. Ниже приведен пример:Компиляция с LLVM/Clang вызывает сбой, а не GCC 4.2

  1. Я компилирую с помощью Xcode 3.2.3, ориентированного на iOS 4.0: мое устройство является вторым поколением iPod touch под управлением iOS 4.0.
  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.

+0

Похоже, что этот вопрос сузился дальше - задайтесь вопросом, связаны ли они: http://stackoverflow.com/questions/5490432/building-with-llvm-and-any-optimization-causes-app-to -crash-on-startup – makdad

+0

Увлекательный. Эта проблема конкретно только что решила начать; он исчез, когда я переместил все в новый проект. Я, как и вы, задаюсь вопросом, связаны ли эти два. –

ответ

3

Похож на что-то расстроенное по памяти. Более конкретно, в стеке.

Есть несколько довольно значительных, хотя и весьма тонких различий в генерации кода между LLVM и GCC. Имейте в виду, что LLVM-GCC действительно GCC-> LLVM; то есть парсер GCC, подающий двигатель генерации кода LLVM.

Таким образом, я подозреваю, что вы попали в прекрасный кейс. Либо ошибка в кодедже LLVM, либо ошибка в вашей программе, которая проявляется в виде такого сбоя.

Сверху моей головы я мог представить себе, что отказ -copy блока, а затем выполнение этого блока в другом потоке может проявляться в виде сбоя, подобного этому.

В любом случае, напишите ошибку, если сможете.

+0

Спасибо за анализ. Проблема в том, что ни один из моих кодов не запускается, поэтому я не думаю, что это может быть проблемой. Он даже не делает это для -applicationDidFinishLaunching :. Возможно ли, что я как-то устроил установку devtools? –

+0

Может быть. Это звучит как проблема с dyld/linker. Переустановка не может повредить. Очень странно. Все еще; файл ошибка и предоставить двоичный файл, если это возможно. – bbum

 Смежные вопросы

  • Нет связанных вопросов^_^