linux内核报错汇编分析
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、怎么分析是内核哪一行报错?
- 总结
前言
提示:这里可以添加本文要记录的大概内容:
Linux内核出现错误经常回报如下错误:
有打印各种信息:包括函数调用栈和RIP
一般我们只能找到对应的函数但是没有办法找到对应的报错的行,比如:
device_add+0xcf/0x860(0xcf表示函数起始+0xcf是报错位置,0x860是函数总大小)。
提示:以下是本篇文章正文内容,下面案例可供参考
一、怎么分析是内核哪一行报错?
1,找到device_add函数地址,System.map中找
cat System.map | grep device_add
找到后使用命令反汇编,确认正确
objdump -d vmlinux > vmlinux.dis
2,直接在源码中使用addr2line命令看在哪一行(device_add+0xcf的地址)
addr2line -e vmlinux ffffffff8173398F
3,使用gdb直接调试编译出的vmlinux看代码行数
使用 info line 命令查看行数,然后使用list命令查看附近的代码
总结
以上介绍了分析内核报错的基本方法。