Linux加载vmlinux调试

使用gdb加载内核符号表

arm-eabi-gdb out/target/product/msm8625/obj/KERNEL_OBJ/vmlinux

在内核的.config里面要打开 DEBUG_INFO和DEBUG_VM

定位故障代码

(gdb) l * qrd7627a_add_io_devices+0x100
0xc07cd05c is in qrd7627a_add_io_devices (/home/yejialong/GH700C/kernel/arch/arm/mach-msm/msm8x25/goso-msm7627a-io.c:1851).
1846      } else if (machine_is_msm8625q_skud() || machine_is_msm8625q_evbd()) {
1847    #ifndef CONFIG_CALA02
1848          platform_device_register(&pmic_mpp_leds_pdev_skud);
1849    #endif
1850          /* enable the skud flash and torch by gpio leds driver */
1851          platform_device_register(&gpio_flash_skud);
1852      } else if (machine_is_msm8625q_skue()) {
1853           /* enable the skue flashlight by gpio leds driver */
1854          platform_device_register(&gpio_flash_skue);
1855      }

下面是mtk平台加载的方法,但是不管哪个平台都是差不多的,道理都是一样的。

weiqifa@weiqifa-Inspiron-3847:~/weiqifa/tm100$ ./prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin/arm-eabi-gdb ./out/target/product/tm100/obj/KERNEL_OBJ/vmlinux
GNU gdb (GDB) 7.3.1-gg2
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=x86_64-linux-gnu --target=arm-linux-android".
For bug reporting instructions, please see:
<http://source.android.com/source/report-bugs.html>...
Reading symbols from /home/weiqifa/weiqifa/tm100/out/target/product/tm100/obj/KERNEL_OBJ/vmlinux...done.
(gdb)

rockchip rk3399调试vmlinux

./prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-addr2line -f -e kernel/vmlinux
weiqifa@dev:~/rk3399_7in1$ ./prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-addr2line -f -e kernel/vmlinux ffffff8008459f3c
rk_iommu_domain_free
/data/weiqifa/rk3399_7in1/kernel/drivers/iommu/rockchip-iommu.c:1005 (discriminator 2)
weiqifa@dev:~/rk3399_7in1$

RK平台tombstone调试

./prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-addr2line -e ./out/target/product/rk3399_mid/symbols/system/lib/libspeexresampler.so 0x00002d54
/proc/self/cwd/external/speex/libspeex/resample.c:376

arm-eabi-gdb  先用命令找到这个东西,然后在去找去找到vmlinux  还有就是我arm-eabi-4.7/ 这个版本才可以用,这个是我试出来的。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • Linux下误删messages文件的找回方法

    如果有进程正在使用的文件,如果被误删了,可以找回.如果没有进程在使用,就无法找回被误删的文件了. 假如/var/log/messages文件被误删了: 1.查询正在使用该文件的进程. [root@www]# lsof |grep message rsyslogd 1717 root 1w REG 8,2 243321 654968 /var/log/messages 2.根据查询结果,是PID为1717的进程正在使用该文件.进入该进程/proc下的目录/proc/1717/fd: [root@w

  • Python使用paramiko操作linux的方法讲解

    paramiko介绍 paramiko是一个基于python编写的.使用ssh协议的模块,跟xshell和xftp功能类似,支持加密与认证,可以上传下载和访问服务器的文件. 可以利用paramiko模块写服务器脚本,在本地执行,比如持续更新代码,查看日志,批量配置集群等. paramiko 主要包含SSHClient和SFTPClient两个组件: SSHClient ssh服务会话的表示,通常用来执行命令,主要有connect.exec_command.load_system_host_key

  • Android之在linux终端执行shell脚本直接打印当前运行app的日志的实现方法

    1.问题 我们一般很多时候会需要在ubuntu终端上打印当前运行app的日志,我们一般常见的做法是 1).获取包名 打开当前运行的app,然后输入如下命令,然后在第一行TASK后面的就可以看到包名 adb shell dumpsys activity top 2).我们的终端安装了pidcat.py脚本,然后执行如下的命令就可以打印当前运行app的全日志, pidcat.py packageName 3).思考,为什么每次都需要这样重复的操作呢?一说到重复,我们应该立马想到是否可以用脚本解决重复

  • pyqt远程批量执行Linux命令程序的方法

    写了个小程序: 功能 1.测试远程ssh连接是否成功, 2.批量执行远程ssh命令 效果如下: 代码如下: #-*- coding:utf-8 -*- import sys from PyQt4 import QtCore, QtGui, uic import locale import re import os from PyQt4.QtCore import * from PyQt4.QtGui import * import paramiko qtCreatorFile = "test.u

  • Linux内核宏container_of的深度剖析

    1.前面说的 我在好几年前读linux 驱动代码的时候看到这个宏,百度了好久,知道怎么用了,但是对实现过程和原理还是一知半解. container_of宏 在linux内核代码里面使用次数非常非常多,对于喜欢linux编程的同学来说,了解其实现方法,对以后看内核代码,写内核驱动的帮助都非常大,当然,我不是说了解这个就可以为所欲为了,内核博大精深,先宏观再微观去学习,不积跬步何以致千里,不要想着一口就能吃成一个胖子,我这篇文章主要剖析一下这个函数的实现原理,希望对大家学习过程中有所帮助. andr

  • Linux shell环境下Zabbix Api的使用

    在linux shell环境下直接调用就可以,根据官网所述:在访问Zabbix中的任何数据之前,你需要登录并获取身份验证令牌.这可以使用该 user.login 方法完成. [root@localhost ~]# curl -i -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method":"user.login","params

  • Linux查看History记录加时间戳的小技巧

    Linux查看History记录加时间戳小技巧 熟悉bash的都一定知道使用history可以输出你曾经输入过的历史命令,例如 [root@servyou_web ~]# history | more 6 ./test.sh 7 vim test.sh 8 ./test.sh 但是这里只显示了命令,并没有显示执行命令的时间,因为保存历史命令的~/.bash_history里并没有保存时间. 通过设置环境变量 export HISTTIMEFORMAT="%F %T `whoami` "

  • Linux shell脚本的建立与执行

    在进行linux测试时编写脚本是必不可少的.最近经常使用Linux,感觉太频繁地敲击键盘有些累了,于是想到了Shell脚本.可以把太多的命令写成一个脚本,这样每次执行一遍  shell文件,就可以省去了敲击键盘的时间.于是在网上搜了一些有关Linux下脚本编程的内容. Shell不仅仅是命令的收集,而且是一门非常棒的编程语言.您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性.可维护性和便携性比效率更重要的任务. 用户可以使用任何文本编辑器编辑shel

  • Linux常见问题解决方案汇总

    1.VMware下的Centos7联网并设置固定ip 1).首先右击虚拟镜像名,点击"设置" 2).打开终端,查看网络 3).使用root用户编辑此文件 4).重启网卡,查看网络 5).再编辑一下之前编辑的文件 [root@nginx ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 #IPADDRO和PREFIXO如上图,GATWAYO和DNS1只需要把IPADDRO最后改为1 IPADDRO=192.168.126.136 PREF

  • Linux后台运行Python程序的几种方法讲解

    1.第一种方法是直接用unhup命令来让程序在后台运行,命令格式如下: unhup python 文件名.py (> ***.log )& 在这个命令中,python指定我们要执行的文件为python文件,后面的文件名.py即是我们要执行的文件.括号内容表示可以将平时输出到控制台中的内容重定向到*.log这个文件中,这个是可选的,如果没有这个,则会默认输出到nohup.out文件中.括号后面你的&表示后台运行. 2.第二种方法是写一个脚本,然后把脚本提交给服务器,让服务器在后台运行脚

随机推荐