一种OOPS定位方法

来源:互联网 发布:价格表用什么软件 编辑:程序博客网 时间:2024/05/21 15:07
 
当系统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

原创粉丝点击