一种OOPS定位方法

 
当系统OOPS时,会打印类似EIP is at symname+offset/size [modname]的消息,比如EIP is at filp_close+0xa/0x5a,从中可以知道OOPS时的函数名是symname,但是不能知道是哪一行产生OOPS,对binutils的 elf.c,simple.c,addr2line.c作些小修改就可以得到具体的行数信息。
1. 下载源码并解压 ftp://sourceware.org/pub/binutils/snapshots/ (我下的是2.19.51版本)
2. 替换附件中的文件elf.c,simple.c,addr2line.c
3. cd binutils-2.19.51
4. ./configure
5. make
6. cd binutils
7. make install
会在/usr/local/bin下产生addr2line等文件,通过addr2line工具
addr2line -e xxx.o/xxx.ko -S symname offset得到行数信息,比如
./addr2line -e open.o -S filp_close a
/software/linux-2.6.27.i686/fs/open.c:1080
也就是open.c的1080行产生OOPS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值