2010-01-06 72 views
2

我想使用gcc和gdb编译带有调试信息的应用程序。当我这样做,调试(.dSYM)文件正确生成:gcc不生成调试文件

gcc -ggdb src/test.c -o build/test 

如果我,但分成编译步骤和链接步骤,像这样的:

gcc -ggdb -c src/test.c -o build/test.o 
gcc -ggdb build/test.o -o dist/bin/test 

...根本没有生成.dSYM文件,因此gdb不会显示发生崩溃的代码的源代码行,这使调试变得更加困难。由于我有相当多的源文件,编译和链接它们全都在一个gcc调用中是不可能的。

如何在使用单独的编译和链接步骤时让gcc生成.dSYM文件?

回答

2

您也可以在编译选项中指定-g3,以便gcc将调试符号直接放入二进制文件中,而不是放在单独的文件中。不知道这是否是你需要的。

+0

问题,通过添加-g3将把所有的调试符号放在bin中?这将与.dSYM的调试符号相同? – 2013-08-21 12:50:29

2

查看this post中第一个答案的第二条评论。

它的一个怪癖。也许你可以手动运行“dsymutil”程序来生成dSYM文件。