使用debuginfo进行编译时,链接器(ld)在Mac OS X上崩溃,但没有正常工作

时间:2010-12-22 15:14:43

标签: macos crash ld

我正在使用雪豹机(10.6.5),而且我正在寻找C ++应用程序中的错误。但是,我无法使用g ++ -O0 -g构建我们的应用程序,因为链接器崩溃了:

g++-4.0 -arch i386 -arch x86_64 ...  -dynamic -bundle -o SOMELIB.dylib <SOME OBJECTS>...
collect2: ld terminated with signal 11 [Segmentation fault]
collect2: ld terminated with signal 11 [Segmentation fault]

我猜这两次崩溃是因为有两个“-arch”标志。 我设法获得了一个核心文件,该文件表示崩溃发生在

(gdb) bt
#0  0x000000010001a2eb in Linker::synthesizeDebugNotes ()
#1  0x0000000100024cc5 in Linker::collectDebugInfo ()
#2  0x0000000100028198 in Linker::link ()
#3  0x000000010002a9eb in main ()

有了这个提示,我从编译器标志中删除了'-g',一切都很好。而且,我们的大部分内容都使用'-g'构建得很好,但只有两个大模块(.dylibs)没有,所以我没有调试信息。而且,具有讽刺意味的是,虫子潜伏在其中一个dylib中。

该错误很可能是由于未初始化的内存使用,因为它很少出现,并且在valgrind下运行应用程序显示有一些未初始化的内存补充,但由于缺少debuginfo,它只是说它发生在模块内XXX(dylib我无法用“-g”编译)

所以,我尝试从Apple的开源网站下载ld实用程序,但我发现(just like that guy)它不会构建,因为缺少对特定于Mac的libunwind版本的依赖,Apple不会放弃。因此,我无法重新编译链接器。

接下来的问题是 - 我现在该怎么办?我真的想避免联系Mac支持......

ld版本为“ld64 97.17”,XCode为3.2.5,gcc为4.0.1。

我真的需要一些指示...

0 个答案:

没有答案