为什么我的可执行文件缺少其调试符号?
我将源文件编译为目标文件:
g++ -g -O0 -c -std=c++11 -Wall -o build/foo.o src/foo.cpp
然后链接:
g++ -g -L{/path1,/path2,...} -l{bar,baz,qux,...} -framework GLUT -framework OpenGL build/foo.o -o bin/foo
如果我在dwarfdump
上运行build/foo.o
,我会看到一堆符号。但是dwarfdump bin/foo
会返回:
----------------------------------------------------------------------
File: bin/foo (x86_64)
----------------------------------------------------------------------
.debug_info contents:
< EMPTY >
当我运行gdb
时, No symbol table info available
也会抱怨info locals
。
发生了什么事?为什么链接步骤似乎破坏了调试符号信息?
我正在运行gdb 7.7.1和gcc 4.8.3(均来自MacPorts)。