一种OOPS定位方法

    技术2022-05-19  19

      当系统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

    最新回复(0)