转载注明出处:http://blog.sina.com.cn/s/blog_61bc01360102vu0i.html
我自己在PC上写了一个小程序进行验证,发现果然是这样。如果把全部.o文件(用-ggdb3选项编译,带调试信息)直接编译成可执行文件,是可以跟踪进入.o文件对应的源文件的;如果先把其中几个.o文件用ar命令打包成静态库,再和主程序的.o文件一起编译成可执行文件,gdb就跟踪不进去了。
观察了一下.a文件和.o文件的大小,我发现.a文件的体积远远小于全部.o文件的总和,看来是在打包的过程中把调试信息弄丢了。上网查了一下,发现只要使用-s(小写s,不是大写S)选项,就可以在.a文件中保留符号信息。
因篇幅问题不能全部显示,请点此查看更多更全内容