根据pc指针指向定位出错位置
kernel编译好以后会生成System.map文件和vmlinux文件,利用gdb可以快速定位到文件出错的位置。我们现在来模拟一个kernel oops的场景。
在drivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c文件的dwc_eth_dwmac_probe函数里定义一个空指针,如下:
把编译好的镜像烧录到开发板里启动后有如下信息:
利用如下命令定位函数dwc_eth_dwmac_probe的地址
grep dwc_eth_dwmac_probe ./System.map
得到函数地址以后,再利用如下命令定位到文件出错的位置:
gdb