linux内核发生Oops时怎么办?
1. 定位发生Oops的代码
1.1 通过addr2line命令定位
aarch64-openwrt-linux-gnu-addr2line -e vmlinux ffff000008087f00
1.2 查询内核符号表和反汇编信息定位
1.2.1 查询对应函数的地址
aarch64-openwrt-linux-gnu-nm vmlinux |grep __memcpy_toio
输出:
ffff000008087ec0 T __memcpy_toio
1.2.2 获取指定地址之间的反汇编信息
aarch64-openwrt-linux-gnu-objdump -S vmlinux --start-address=0xffff000008087ec0 --stop-address=0xffff000008087f48 > dis.txt
1.2.3 从反汇编信息文件dis.txt中查找地址ffff000008087f00处的信息