文章目录

  • Linux调试之(三)addr2line+vmlinux
    • 【1】 addr2line位置
    • 【2】addr2line使用
      • [1] 说明是空指针造成的错误
      • [2] 寄存器信息主要是PC的值
      • [3] addr2line定位错误

Linux调试之(三)addr2line+vmlinux

addr2line可以将出错代码地址转转换成代码所在文件所在行。


【1】 addr2line位置

./prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-addr2line


【2】addr2line使用

分析崩溃重启log:

Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: 805 [#1] PREEMPT SMP ARM
Modules linked in:
CPU: 1 PID: 1 Comm: swapper/0 Not tainted 3.14.0 #11
task: ee8a0000 ti: ee8a4000 task.ti: ee8a4000
PC is at dm9000_probe+0x1c/0x8f0
LR is at platform_drv_probe+0x18/0x48
pc : [<c0277cc8>]    lr : [<c0247f7c>]    psr: 60000153
sp : ee8a5e48  ip : 00000000  fp : 00000000
r10: c052a4fc  r9 : 00000000  r8 : c0591e98
r7 : 00000000  r6 : ee97c810  r5 : ee97c800  r4 : 00000000
r3 : 000000ff  r2 : 00000000  r1 : ee8a5de8  r0 : ee97c800
Flags: nZCv  IRQs on  FIQs off  Mode SVC_32  ISA ARM  Segment kernel
Control: 10c5387d  Table: 4000404a  DAC: 00000015
Process swapper/0 (pid: 1, stack limit = 0xee8a4240)
Stack: (0xee8a5e48 to 0xee8a6000)
5e40:               ee975cf0 00000000 ee1503a8 00000001 c0561afc ee150438
5e60: 00000000 ee97c810 c0591e98 ee97c810 00000000 c0591e98 c0561afc c052a4fc
5e80: 00000000 c0247f7c c0247f64 c05d931c c0591e98 c0246668 ee97c810 c0591e98
[<c0277cc8>] (dm9000_probe) from [<c0247f7c>] (platform_drv_probe+0x18/0x48)
[<c0247f7c>] (platform_drv_probe) from [<c0246668>] (driver_probe_device+0x100/0x210)
[<c0246668>] (driver_probe_device) from [<c0246804>] (__driver_attach+0x8c/0x90)
[<c0246804>] (__driver_attach) from [<c0244fbc>] (bus_for_each_dev+0x58/0x88)
[<c0244fbc>] (bus_for_each_dev) from [<c0245e28>] (bus_add_driver+0xd8/0x1cc)
[<c0245e28>] (bus_add_driver) from [<c0246e1c>] (driver_register+0x78/0xf4)

[1] 说明是空指针造成的错误

Unable to handle kernel NULL pointer dereference at virtual address 00000000

[2] 寄存器信息主要是PC的值

PC is at dm9000_probe+0x1c/0x8f0
pc : [<c0277cc8>]    lr : [<c0247f7c>]    psr: 60000153

[3] addr2line定位错误

aarch64-linux-android-addr2line -f -e vmlinux 0xyyyyyyyy也就是PC值)

./prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-addr2line -f -e kernel/vmlinux c0277cc8 dm9000_probe

Linux调试之(三)addr2line+vmlinux相关推荐

  1. Linux 调试之 TRACE_EVENT(三)

    文章目录 前言 一.include/trace/events之外定义跟踪头文件 二.tracepoint 使用演示 三.A look inside the magic of TRACE_EVENT() ...

  2. Linux调试之(二)gdb+vmlinux

    文章目录 Linux调试之(二)gdb+vmlinux [1]定位arm-eabi-gdb 和 vmlinux [2]gdb加载内核符号表 1.查看内核符号表 2.执行arm-eabi-gdb vml ...

  3. 20135302魏静静——linux课程第三周实验及总结

    linux课程第三周实验及总结 一.实验:跟踪分析Linux内核的启动过程 使用gdb跟踪调试内核从start_kernel到init进程启动 使用实验楼的虚拟机打开shell cd LinuxKer ...

  4. linux内核调度,Linux内核的三种调度策略

    一 Linux内核的三种调度策略: 1,SCHED_OTHER 分时调度策略, 2,SCHED_FIFO实时调度策略,先到先服务.一旦占用cpu则一直运行.一直运行直到有更高优先级任务到达或自己放弃 ...

  5. Linux 调试之 TRACE_EVENT(二)

    文章目录 前言 一.DECLARE_EVENT_CLASS简介 二.TP_STRUCT__entry 2.1 __field_ext(type, item, filter_type) 2.2 __st ...

  6. 【Linux】Linux调试器--gdb详解

    Linux环境基础开发工具使用(二) 一.Linux调试器-gdb使用 1.背景 2.使用 二.Linux项目自动化构建工具-make/Makefile 1.背景 2.依赖关系和依赖方法 3.原理 4 ...

  7. LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍

    LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍 LVS (Linux Virtual Server) LVS(Linux Virtual Server)其实就是 ...

  8. windows系统中查看linux分区的三种方式

    双系统中windows查看linux分区的三种方式 一.这个算是大家早有耳闻的啦,就是使用Explore2fs这个工具,可以去 http://www.chrysocome.net/explore2fs ...

  9. linux查看日志的几种命令,Linux查看日志三种命令(转载)

    第一种:查看实时变化的日志(比较吃内存) 最常用的: tail -f filename (默认最后10行,相当于增加参数 -n 10) Ctrl+c 是退出tail命令 其他情况: tail -n 2 ...

最新文章

  1. 分布式事务开局第一篇,从数据库事务隔离级别说起
  2. 信息上传服务器加速cpu处理,英特尔发布全新第二代至强可扩展处理器携手浪潮加速新型应用发展...
  3. jQuery Mobile和PhoneGap混合开发
  4. git revert 的问题
  5. research paper for management science
  6. 《.NET应用架构设计:原则、模式与实践》新书博客--试读-持续更新
  7. Spring Boot 中使用 MyBatis 整合 Druid 多数据源
  8. 某游戏在华为鸿蒙,华为鸿蒙系统运行安卓游戏出现新状况!安卓换皮论被彻底打脸?...
  9. JEECG企业微云快速二次开发平台-新版本首页展示
  10. testlink匹配mysql8_如何安装Testlink
  11. Android中 广播发送 和 接受 的简单示例
  12. 为什么那么多人用“ji32k7au4a83”作密码?
  13. EXPLAIN PLAN用法小议
  14. WinCC flexible的版本与安装移植软件
  15. nfc卡模式与标准模式_NFC是什么?有什么优势和劣势?
  16. 胜任力模型(competency model)
  17. 维修技术论坛万能预装系统 v5.0
  18. Unity打包后的日志
  19. 好全的前端只是体系(前端架构师来找找有木有你想要的) 五
  20. 运营︱快速提高app日活的方法

热门文章

  1. sqlserver禁用和开启外键约束
  2. 苏州科达-测试-面经(一面)
  3. ModuleNotFoundError: No module named ‘werkzeug.contrib‘ 解决方法
  4. Makefile编写——菜鸟杂谈
  5. 深度学习于语音合成研究综述
  6. GPT3=魔鬼搜索引擎?从一个隐私血案说起...
  7. Trie树 -- 高效的字典树
  8. Linux下用命令导出mysql表数据
  9. Flink的并行度及Slot
  10. 设计模式(五)之适配器模式