如何将调试符号放在ar文件中

时间:2012-03-19 01:47:21

标签: gcc gdb

如何将调试符号放在ar文件中

当我运行gdb然后键入symbol-file somelib.a时会显示'somelib.a':无法读取符号:文件格式无法识别。

但是对于组成.a文件的.o文件

它确实有效

我使用gcc -c -g somefile.c编译

1 个答案:

答案 0 :(得分:1)

静态库不是运行时文件,因此对调试器不感兴趣。调试信息通常会被拉出来并在链接时插入到最终的二进制文件中。

如果您考虑一下,从多个未链接的.o文件中加载符号是不可能的(或有意义的):它们都具有相同的基址(通常为零)并且没有用处。 .a文件包含多个未链接的.o文件,并且会出现完全相同的问题。

如果您对二进制文件进行了条带化​​处理,那么您应该保留相应的调试文件(请参阅strip --only-keep-debug),而不是进入它的库。只有可执行二进制文件和共享库具有包含有意义地址的调试信息。