android libdvm.so,Android 调试.so库文件

调试步骤如下:

1/ 将异常的地址信息存到文本文件,并存放在项目根目录;

2/ 使用panic.py解析该文件;

3/ 根据返回的信息(文件名;行号;方法名)调试程序。

以操作第三方的Touch input 输入法为例,过程如下:

# 该输入法的英文和手写OK,操作中文输入法时,出现异常,软键盘消失,异常日志如下

02-05 06:41:19.834 D/dalvikvm(  751): Trying to load lib /system/lib/libimezi.so 0x43e2a788

02-05 06:41:19.874 D/dalvikvm(  751): Added shared lib /system/lib/libimezi.so 0x43e2a788

02-05 06:41:20.035 I/DEBUG   (  551): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

02-05 06:41:20.035 I/DEBUG   (  551): Build fingerprint: 'unknown'

02-05 06:41:20.035 I/DEBUG   (  551): pid: 751, tid: 751  >>> com.htc.android.cime <<<

02-05 06:41:20.045 I/DEBUG   (  551): signal 11 (SIGSEGV), fault addr 00000003

02-05 06:41:20.045 I/DEBUG   (  551):  r0 00000000  r1 00000000  r2 807248ec  r3 807248ec

02-05 06:41:20.055 I/DEBUG   (  551):  r4 00252d80  r5 00000004  r6 00000001  r7 00000000

02-05 06:41:20.055 I/DEBUG   (  551):  r8 beff8550  r9 41459d28  10 41459d18  fp 00000000

02-05 06:41:20.055 I/DEBUG   (  551):  ip 8072430c  sp beff84f0  lr 80716b4f  pc 80717bce cpsr 60000030

02-05 06:41:20.135 I/DEBUG   (  551):          #00  pc 00017bce  /system/lib/libimezi.so

02-05 06:41:20.135 I/DEBUG   (  551):          #01  pc 00010f80  /system/lib/libimezi.so

02-05 06:41:20.145 I/DEBUG   (  551): stack:

02-05 06:41:20.155 I/DEBUG   (  551):     beff84b0  ad083e10

02-05 06:41:20.155 I/DEBUG   (  551):     beff84b4  ad05d44f  /system/lib/libdvm.so

02-05 06:41:20.155 I/DEBUG   (  551):     beff84b8  ad06b8a0  /system/lib/libdvm.so

02-05 06:41:20.155 I/DEBUG   (  551):     beff84bc  ad083e10

02-05 06:41:20.167 I/DEBUG   (  551):     beff84c0  43e2aa90

02-05 06:41:20.175 I/DEBUG   (  551):     beff84c4  00000003

02-05 06:41:20.175 I/DEBUG   (  551):     beff84c8  00000014

02-05 06:41:20.185 I/DEBUG   (  551):     beff84cc  80716b4f  /system/lib/libimezi.so

# 保存异常日志,存为文件: 20100205_ime.txt

02-05 06:41:20.045 I/DEBUG   (  551):  r0 00000000  r1 00000000  r2 807248ec  r3 807248ec

02-05 06:41:20.055 I/DEBUG   (  551):  r4 00252d80  r5 00000004  r6 00000001  r7 00000000

02-05 06:41:20.055 I/DEBUG   (  551):  r8 beff8550  r9 41459d28  10 41459d18  fp 00000000

02-05 06:41:20.055 I/DEBUG   (  551):  ip 8072430c  sp beff84f0  lr 80716b4f  pc 80717bce  cpsr 60000030

02-05 06:41:20.135 I/DEBUG   (  551):          #00  pc 00017bce  /system/lib/libimezi.so

02-05 06:41:20.135 I/DEBUG   (  551):          #01  pc 00010f80  /system/lib/libimezi.so

# 执行脚本

xujianxiang@wingdroid-clone:~/workspace/xujx/wing15$ ./panic.py 20100205_ime.txt

read file ok

/home/xujianxiang/workspace/xujx/wing15/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-addr2line: '/home/xujianxiang/workspace/xujx/wing15/out/target/product/generic/symbols/system/lib/libimezi.so': No such file

Traceback (most recent call last):

File "./panic.py", line 69, in

print "%-30s%s" % (list[1],list[0])

IndexError: list index out of range

# 没找到库文件,因为这个文件是第三方的,只存放在/out/target/product/generic/system/lib /libimezi.so,拷贝一份存到/out/target/product/generic/symbols/system/lib /libimezi.so,再次执行脚本

xujianxiang@wingdroid-clone:~/workspace/xujx/wing15$ ./panic.py 20100205_ime.txt

read file ok

zi81keyd.c:0                  Zi8GetTableData

zi81keyd.c:0                  Zi8InitializeDynamic

# 成功解析异常,没有zi8库文件所致,更新如下库文件,输入法支持中文拼音。

/system/lib/zi/Zi8DatPYP_CN.z8d

/system/lib/zi/Zi8DatPYS_CN.z8d

/system/lib/zi/Zi8DatZHA_CN.z8d

/system/lib/zi/Zi8DatZHA_HK.z8d

/system/lib/zi/Zi8DatZHA_TW.z8d

/system/lib/zi/Zi8DatZYP_TW.z8d

/system/lib/zi/Zi8DatZYS_TW.z8d

附 panic.py:

1

4f1150b881333f12a311ae9ef34da474.png#!/usr/bin/python24f1150b881333f12a311ae9ef34da474.png#stack symbol parser34f1150b881333f12a311ae9ef34da474.png44f1150b881333f12a311ae9ef34da474.pngimportos54f1150b881333f12a311ae9ef34da474.pngimportstring64f1150b881333f12a311ae9ef34da474.pngimportsys74f1150b881333f12a311ae9ef34da474.png84f1150b881333f12a311ae9ef34da474.png#define android product name94f1150b881333f12a311ae9ef34da474.png#ANDROID_PRODUCT_NAME = 'generic'104f1150b881333f12a311ae9ef34da474.pngANDROID_PRODUCT_NAME='smdk6410'114f1150b881333f12a311ae9ef34da474.png124f1150b881333f12a311ae9ef34da474.pngANDROID_WORKSPACE=os.getcwd()+"/"134f1150b881333f12a311ae9ef34da474.png144f1150b881333f12a311ae9ef34da474.png#addr2line tool path and symbol path154f1150b881333f12a311ae9ef34da474.pngaddr2line_tool=ANDROID_WORKSPACE+'prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-addr2line'164f1150b881333f12a311ae9ef34da474.pngsymbol_dir=ANDROID_WORKSPACE+'out/target/product/'+ANDROID_PRODUCT_NAME+'/symbols'174f1150b881333f12a311ae9ef34da474.pngsymbol_bin=symbol_dir+'/system/bin/'184f1150b881333f12a311ae9ef34da474.pngsymbol_lib=symbol_dir+'/system/lib/'194f1150b881333f12a311ae9ef34da474.png204f1150b881333f12a311ae9ef34da474.pngclassReadLog:214f1150b881333f12a311ae9ef34da474.pngdef__init__(self,filename):224f1150b881333f12a311ae9ef34da474.png        self.logname=filename234f1150b881333f12a311ae9ef34da474.pngdefparse(self):244f1150b881333f12a311ae9ef34da474.png        f=file(self.logname,'r')254f1150b881333f12a311ae9ef34da474.png        lines=f.readlines()264f1150b881333f12a311ae9ef34da474.pngiflines!=[]:274f1150b881333f12a311ae9ef34da474.pngprint'read file ok'284f1150b881333f12a311ae9ef34da474.pngelse:294f1150b881333f12a311ae9ef34da474.pngprint'read file failed'304f1150b881333f12a311ae9ef34da474.png        result=[]314f1150b881333f12a311ae9ef34da474.pngforlineinlines:324f1150b881333f12a311ae9ef34da474.pngifline.find('stack')!=-1:334f1150b881333f12a311ae9ef34da474.pngprint'stop search'344f1150b881333f12a311ae9ef34da474.pngbreak354f1150b881333f12a311ae9ef34da474.pngelifline.find('system')!=-1:364f1150b881333f12a311ae9ef34da474.png#print 'find one item' + line374f1150b881333f12a311ae9ef34da474.pngresult.append(line)384f1150b881333f12a311ae9ef34da474.pngreturnresult394f1150b881333f12a311ae9ef34da474.png404f1150b881333f12a311ae9ef34da474.pngclassParseContent:414f1150b881333f12a311ae9ef34da474.pngdef__init__(self,addr,lib):424f1150b881333f12a311ae9ef34da474.png            self.address=addr#pc address434f1150b881333f12a311ae9ef34da474.pngself.exename=lib#executable or shared library444f1150b881333f12a311ae9ef34da474.pngdefaddr2line(self):454f1150b881333f12a311ae9ef34da474.png        cmd=addr2line_tool+"-C -f -s -e"+symbol_dir+self.exename+""+self.address464f1150b881333f12a311ae9ef34da474.png#print cmd474f1150b881333f12a311ae9ef34da474.pngstream=os.popen(cmd)484f1150b881333f12a311ae9ef34da474.png        lines=stream.readlines();494f1150b881333f12a311ae9ef34da474.png        list=map(string.strip,lines)504f1150b881333f12a311ae9ef34da474.pngreturnlist514f1150b881333f12a311ae9ef34da474.png524f1150b881333f12a311ae9ef34da474.pnginputarg=sys.argv534f1150b881333f12a311ae9ef34da474.pngiflen(inputarg)<2:544f1150b881333f12a311ae9ef34da474.pngprint'Please input panic log'554f1150b881333f12a311ae9ef34da474.png    exit()564f1150b881333f12a311ae9ef34da474.png574f1150b881333f12a311ae9ef34da474.pngfilename=inputarg[1]584f1150b881333f12a311ae9ef34da474.pngreadlog=ReadLog(filename)594f1150b881333f12a311ae9ef34da474.pnginputlist=readlog.parse()604f1150b881333f12a311ae9ef34da474.png614f1150b881333f12a311ae9ef34da474.pngforitemininputlist:624f1150b881333f12a311ae9ef34da474.png    itemsplit=item.split()634f1150b881333f12a311ae9ef34da474.png    test=ParseContent(itemsplit[-2],itemsplit[-1])644f1150b881333f12a311ae9ef34da474.png    list=test.addr2line()654f1150b881333f12a311ae9ef34da474.pngprint"%-30s%s"%(list[1],list[0])664f1150b881333f12a311ae9ef34da474.png

posted on 2010-03-06 12:56 Xu Jianxiang 阅读(3645) 评论(0)  编辑  收藏 所属分类: Android

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值