根据符号的地址从elf文件中查找其符号名

通过下面的shell脚本实现此功能。

#!/bin/sh


addr=""
elf_file=""


print_usage()  
{
    echo "usage:"
    echo "$0 <address>  <elf_file>"
    echo "example: "
    echo "$0     1234    hello_world.exe"
}


parse_args()  
{
    if [ "$#" = "" ]; then    
        print_usage
        return 1
    fi
    
    if [ $# -lt 2 ]; then
        print_usage
        return 1
    fi
    
    if [ ! -r $2 ]; then
        echo "file $2 does not exist"
        return 1
    fi
    
    addr=`echo $(($1+0))`
    elf_file=$2
    
   return 0 
}


parse_args $*
if [ $? -ne 0 ]; then
    exit 1
fi


nm -S -t d ${elf_file} | awk '$NF>=4 && $3 ~ /^[a-z]/ && $1<="'${addr}'" && "'${addr}'"<$1+$2 {print $4}'

你可能感兴趣的:(根据符号的地址从elf文件中查找其符号名)