Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 使用LLVM/Clang编译会导致崩溃,而不是GCC4.2_Iphone_Objective C_Gcc_Llvm_Clang - Fatal编程技术网

Iphone 使用LLVM/Clang编译会导致崩溃,而不是GCC4.2

Iphone 使用LLVM/Clang编译会导致崩溃,而不是GCC4.2,iphone,objective-c,gcc,llvm,clang,Iphone,Objective C,Gcc,Llvm,Clang,我正在开发一个iPhone应用程序,我遇到了一些编译器问题。下面是一些细节: 我正在使用Xcode 3.2.3进行编译,目标是iOS 4.0:我的设备是运行iOS 4.0的第二代iPod touch 使用GCC4.2编译:可在模拟器和设备上运行 使用LLVM编译器1.5编译:可以在模拟器上工作,但不能在设备上工作 使用LLVM GCC 4.2编译:与LLVM编译器1.5的问题相同 当它失败时,应用程序甚至从未完成加载。这是日志的外观: run Running… [Switching to thr

我正在开发一个iPhone应用程序,我遇到了一些编译器问题。下面是一些细节:

  • 我正在使用Xcode 3.2.3进行编译,目标是iOS 4.0:我的设备是运行iOS 4.0的第二代iPod touch
  • 使用GCC4.2编译:可在模拟器和设备上运行
  • 使用LLVM编译器1.5编译:可以在模拟器上工作,但不能在设备上工作
  • 使用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上发布的最新功能(隐式的
    @synthetic
    ,在类别中添加实例变量的能力,等等),但这需要使用Clang。

    看起来像是内存中的一些东西。更具体地说,在堆栈上

    LLVM和GCC之间在代码生成方面存在一些相当显著的差异,尽管这些差异非常细微。请记住,LLVM-GCC实际上是GCC->LLVM;也就是说,为LLVM代码生成引擎提供数据的GCC解析器

    因此,我怀疑你打了一个漂亮的边缘案件。要么是LLVM的codegen中的一个bug,要么是程序中的一个bug,表现为这种崩溃

    在我脑海中,我可以想象,复制一个块然后在另一个线程上执行该块的失败可能会表现为这样的崩溃


    在任何情况下,如果可以的话,请提交一个bug。

    看起来像是内存中出现了什么问题。更具体地说,在堆栈上

    LLVM和GCC之间在代码生成方面存在一些相当显著的差异,尽管这些差异非常细微。请记住,LLVM-GCC实际上是GCC->LLVM;也就是说,为LLVM代码生成引擎提供数据的GCC解析器

    因此,我怀疑你打了一个漂亮的边缘案件。要么是LLVM的codegen中的一个bug,要么是程序中的一个bug,表现为这种崩溃

    在我脑海中,我可以想象,复制一个块然后在另一个线程上执行该块的失败可能会表现为这样的崩溃


    无论如何,如果可以的话,请提交一个bug。

    谢谢您的分析。问题是我的代码都没有实际运行,所以我认为这不会是一个问题。它甚至不能到达-applicationdFinishLaunching:。有没有可能我的devtools安装出了问题?有可能。这听起来像是dyld/链接器的问题。重新安装不会有什么坏处。很奇怪。仍然;如果可能的话,提交一个bug并提供二进制文件。感谢您的分析。问题是我的代码都没有实际运行,所以我认为这不会是一个问题。它甚至不能到达-applicationdFinishLaunching:。有没有可能我的devtools安装出了问题?有可能。这听起来像是dyld/链接器的问题。重新安装不会有什么坏处。很奇怪。仍然;如果可能的话,提交一个bug并提供二进制文件。在这个问题上,它似乎被进一步缩小了范围——想知道它们是否相关:很吸引人。这个问题刚刚决定开始发生;当我把所有东西都转移到一个新项目时,它就消失了。一、 像你一样,想知道这两者是否有关联。似乎在这个问题上,它的范围进一步缩小了——想知道它们是否有关联:令人着迷。这个问题刚刚决定开始发生;当我把所有东西都转移到一个新项目时,它就消失了。一、 像你一样,想知道这两者是否有关联。