当前位置: 技术问答>linux和unix
GCC编译的时候能跟vc一样把exe和PDB文件分开吗?
来源: 互联网 发布时间:2017-05-21
本文导语: 就是想把执行文件和调试信息文件分开。 网上找到的办法是用objcopy 从本来用-G编译好的文件中分离出 可执行文件和符号信息文件。 试了下可以做到。 但是分离出来的可执行文件比本身用-o编译出来的文件还是大...
就是想把执行文件和调试信息文件分开。
网上找到的办法是用objcopy 从本来用-G编译好的文件中分离出 可执行文件和符号信息文件。
试了下可以做到。
但是分离出来的可执行文件比本身用-o编译出来的文件还是大了点。
不知道为什么
有没有g++编译的时候就直接把 调试信息和可执行文件分离的编译选项?
这种事情,正常的公司是怎么做的?用-G先编译出来,然后用objcopy 分离?然后发布分离出来的可执行文件?
网上找到的办法是用objcopy 从本来用-G编译好的文件中分离出 可执行文件和符号信息文件。
试了下可以做到。
但是分离出来的可执行文件比本身用-o编译出来的文件还是大了点。
不知道为什么
有没有g++编译的时候就直接把 调试信息和可执行文件分离的编译选项?
这种事情,正常的公司是怎么做的?用-G先编译出来,然后用objcopy 分离?然后发布分离出来的可执行文件?
|
确实楼主问的好问题!
先说说我们现在负责的产品,是没有将symbol保存下来,而且直接strip binary然后发布出去。这样确实会来来一个问题,就是经常会出现程序crash之后,只能强制使用不一致的带符号信息的binary去分析。或者说如果分析不出来,我们将会重新编译一份带符号信息的binary出来,让客户去重现问题。然后分析dump..... 这样的做法确实不妥。那么我也和楼主有同样的问题,如何去做呢?
后来想想,很多的Linux应用程序在发布后,同时都会发布一个debuginfo的rpm包,也就是说他们会将symbol内容从binary中取出来,然后打包。
最后关于一般如何分离Symbol等信息,应该就是如您所说的objcopy。
关于更多查看:
http://stackoverflow.com/questions/866721/how-to-generate-gcc-debug-symbol-outside-the-build-target
先说说我们现在负责的产品,是没有将symbol保存下来,而且直接strip binary然后发布出去。这样确实会来来一个问题,就是经常会出现程序crash之后,只能强制使用不一致的带符号信息的binary去分析。或者说如果分析不出来,我们将会重新编译一份带符号信息的binary出来,让客户去重现问题。然后分析dump..... 这样的做法确实不妥。那么我也和楼主有同样的问题,如何去做呢?
后来想想,很多的Linux应用程序在发布后,同时都会发布一个debuginfo的rpm包,也就是说他们会将symbol内容从binary中取出来,然后打包。
最后关于一般如何分离Symbol等信息,应该就是如您所说的objcopy。
关于更多查看:
http://stackoverflow.com/questions/866721/how-to-generate-gcc-debug-symbol-outside-the-build-target