内容参考nginx源码分析一书,这个解析写的很好,特记录在这里
要分析的文件debug.log如下:
Enter
0x804a5fc
0x806e2b3
Exit
0x804a5fc
0x806e2b3
...
完成分析功能addr2line.sh
#!/bin/sh
if[ $# != 3 ]; then
echo 'Usage: addr2line.sh executefile addressfile functionfile'
exit
fi;
cat $2 | while read line
do
if [ "$line" = 'Enter' ]; then
read line1
read line2
addr2line -e $1 -f $line1 -s >> $3
echo "--->" >> $3
addr2line -e $1 -f $line2 -s | sed 's/^/ /'>> $3
echo >> $3
elif[ "$line" = 'Exit' ]; then
read line1
read line2
addr2line -e $1 -f $line2 -s | sed 's/^/ /'>> $3
echo "<---" >> $3
addr2line -e $1 -f $line1 -s >> $3
echo >> $3
fi;
done