How to generate gcc debug symbol outside the build target?

来源:互联网 发布:数据江湖txt精校版 编辑:程序博客网 时间:2024/05/16 00:44

You need to use objcopy to separate the debug information:

objcopy --only-keep-debug "${tostripfile}" "${debugdir}/${debugfile}"strip --strip-debug --strip-unneeded "${tostripfile}"objcopy --add-gnu-debuglink="${debugdir}/${debugfile}" "${tostripfile}"

I use the bash script below to separate the debug information into files with a .debug extension in a .debug directory. This way I can tar the libraries and executables in one tar file and the .debug directories in another. If I want to add the debug info later on I simply extract the debug tar file and voila I have symbolic debug information.

This is the bash script:

#!/bin/bashscriptdir=`dirname ${0}`scriptdir=`(cd ${scriptdir}; pwd)`scriptname=`basename ${0}`set -efunction errorexit(){  errorcode=${1}  shift  echo $@  exit ${errorcode}}function usage(){  echo "USAGE ${scriptname} <tostrip>"}tostripdir=`dirname "$1"`tostripfile=`basename "$1"`if [ -z ${tostripfile} ] ; then  usage  errorexit 0 "tostrip must be specified"ficd "${tostripdir}"debugdir=.debugdebugfile="${tostripfile}.debug"if [ ! -d "${debugdir}" ] ; then  echo "creating dir ${tostripdir}/${debugdir}"  mkdir -p "${debugdir}"fiecho "stripping ${tostripfile}, putting debug info into ${debugfile}"objcopy --only-keep-debug "${tostripfile}" "${debugdir}/${debugfile}"strip --strip-debug --strip-unneeded "${tostripfile}"objcopy --add-gnu-debuglink="${debugdir}/${debugfile}" "${tostripfile}"chmod -x "${debugdir}/${debugfile}"
原创粉丝点击