如何将调试符号放在ar文件中
当我运行gdb然后键入symbol-file somelib.a时会显示'somelib.a':无法读取符号:文件格式无法识别。
但是对于组成.a文件的.o文件
它确实有效我使用gcc -c -g somefile.c编译
答案 0 :(得分:1)
静态库不是运行时文件,因此对调试器不感兴趣。调试信息通常会被拉出来并在链接时插入到最终的二进制文件中。
如果您考虑一下,从多个未链接的.o文件中加载符号是不可能的(或有意义的):它们都具有相同的基址(通常为零)并且没有用处。 .a文件包含多个未链接的.o文件,并且会出现完全相同的问题。
如果您对二进制文件进行了条带化处理,那么您应该保留相应的调试文件(请参阅strip --only-keep-debug
),而不是进入它的库。只有可执行二进制文件和共享库具有包含有意义地址的调试信息。