2011-10-22 30 views
1

将多个文件编译为可执行文件时遇到问题。 我对GCC命令是:为什么GDB不创建符号文件?

gcc -g -o PartitionedHashJoin -O0 -msse4.2 -lm -DNUM_BUCKETS=2 Relations.h Relations.c PartitionedHashJoin.h PartitionedHashJoin.c 

GCC编译正确,但显然不会创建一个DSYM(Mac OS)中的符号文件。 我试图剥离SSE或-lm编译器选项,但没有效果。

有没有人有一个想法,我可以如何让我的调试符号?

谢谢!

更新/编辑: 我会满足于嵌入的符号,它并没有成为一个DSYM文件,但嵌入的似乎丢失了。 dsymutil无法在使用上述命令创建的可执行文件中找到它们。

+0

确保在系统中安装了'dsyumutil'并阅读[this comment](http://stackoverflow.com/questions/4850788/prevent-compiling-from-generating-dsym-on-os-x-using -make/5391173#5391173)。 –

+0

该实用程序已安装 - 感谢提示。在调用该实用程序时,它会抱怨缺少可执行文件内的调试符号 - 显然它们不是在那里创建的。 – Patrick

+0

也试试-ggdb,但不知道它会有所帮助。 –

回答

0

在其他Unix和Linux上,gcc在对象文件内部发出调试信息。我不知道MacOSX上发生了什么。

+0

dma_k的链接指出,这些符号也应驻留在Mac OS X的目标文件中。但是,我(或'dsymutil')似乎无法找到它们 - 我需要指定一个位置以在调用gcc时保存它们吗? – Patrick

相关问题