Android hal 层 C 堆栈打印方法

一、添加CallStack文件

在hardware/qcom/audio/hal/ 下添加 callstack.cpp 和 callstack.h文件

#ifndef __CALLSTACK_H__
#define __CALLSTACK_H__void dumping_callstack(void);
#endif
#include <utils/CallStack.h>extern "C" void dumping_callstack(void);void dumping_callstack(void)
{android::CallStack cs("Jamie");
}

二、修改 Android.mk 文件

<

之前修改Android.mk 是添加 libutils ,但是编译报错,在 android 9.0 中,应该使用 libutilscallstack

三、调用方法

选择想要打印的调用函数所在文件,如:audio_hw.c

  1. 添加头文件 #include "callstack.h"

  2. 在想要追查的方法中调用 dumping_callstack();

  3. 保存编译;

  4. 刷机、运行相关程序;

  5. 查看日志(关键字搜索)

得到栈堆信息 (栈下标、pc 指针地址、库名、调用方法+行数)

四、addr2line 定位

​ 这个工具在不同的android 平台上,放置的位置和名称有些区别

android 9.0 位置在

prebuilts\gcc\linux-x86\aarch64\aarch64-linux-android-4.9\bin\aarch64-linux-android-addr2line

aarch64-linux-android-addr2line -f -e 库名 pc指针地址

本机命令执行的结果和日志中括号内的信息基本一致,所以第三步结束基本已经可以查找到函数调用关系了。

想要学习了解 addr2line 的可以查阅相关资料。

Android hal 层 C 堆栈打印方法相关推荐

  1. Android 各层中日志打印功能的应用

    Android 各层中日志打印功能的应用 1. HAL层 头文件:#include <utils/Log.h>  对应的级别 打印方法   VERBOSE LOGV() DEBUG LOG ...

  2. Android Hal层简要分析

    Android Hal层简要分析 Android Hal层(即 Hardware Abstraction Layer)是Google开发的Android系统里上层应用对底层硬件操作屏蔽的一个软件层次, ...

  3. Android 系统(4)---Android HAL层与Linux Kernel层驱动开发简介

    Android HAL层与Linux Kernel层驱动开发简介 近日稍微对Android中的驱动开发做了一些简要的了解,稍稍理清了一下Android驱动开发的套路,总结一下笔记. HAL:Hardw ...

  4. Android HAL层与Linux Kernel层驱动开发简介

    Android HAL层与Linux Kernel层驱动开发简介 阅读数:5070 近日稍微对Android中的驱动开发做了一些简要的了解,稍稍理清了一下Android驱动开发的套路,总结一下笔记. ...

  5. Android HAL 层,三个重要的结构体的源码~

    最近在学习android HAL 层 ~ 离不开这三个数据结构~~先贴出来 typedef struct hw_module_t {     /** tag must be initialized t ...

  6. 【转】android hal 层GPS 研究总结——关于GPS GGA/GSV/RMC 数据的解析

    [转]android hal 层GPS 研究总结 2011-09-22 快跑的未必能赢,力战的未必获胜,聪明的未必得粮食,明哲的未必得资财,灵活的未必得喜悦.所临到世人的,是在乎当时的机会. 人生一世 ...

  7. Android HAL层/native C程序打印栈信息方法

    在调试Android系统底层函数时,经常需要跟踪函数调用流程,特别在HAL层需要确定参数来源时.使用栈信息逆向跟踪可快速分析函数调用流程,结合使用addr2line工具.绘图工具可绘制函数关系图.本文 ...

  8. Android Hal层回调APP应用接口

    前面文章讲述了Android APP怎么调用hal层的方法,和Android系统自带的灯光子系统类似:本文将讲述hal层如何回调APP应用接口,和android系统振动传感器数据上报类似,同时本文也会 ...

  9. Android HAL层到驱动代码搜索---基于背光亮度的调试

    以前阅读源码时一般只阅读到fwk层部分,近期因为一个问题,想顺便把fwk层到hal 到驱动的调用关系都看下.在此做下记录. 原始问题是客户嫌屏幕调到最大亮度后仍然觉得亮度不够亮,让看看能不能把亮度调亮 ...

最新文章

  1. 第15届全国大学生智能汽车竞赛 人工智能创意赛(预赛)
  2. BZOJ2584 : [Wc2012]memory
  3. 急速JavaScript全栈教程
  4. ubuntu12.04下NFS链接开发板并测试交叉编译的第一个应用
  5. SDUT_2116 数据结构实验之链表一:顺序建立链表
  6. mysql 的独占锁和排它锁_MySQL的排它锁与共享锁
  7. linux 如何打包分区文件,Linux基础------文件打包解包---tar命令,文件压缩解压---命令gzip,vim编辑器创建和编辑正文件,磁盘分区/格式化,软/硬链接...
  8. git php自动发布,使用 Git Hooks 实现自动部署PHP项目
  9. java怎么写事件listener_java 事件监听器ActionListener
  10. Java学习笔记2.3.4 运算符与表达式 - 逻辑运算符
  11. POI生成Web版Word文件
  12. Spark-Kudu报错:kudu.client.NonRecoverableException: The table was deleted: Table deleted at xxx
  13. gradle是干什么_gradle和ant等构建工具有什么核心优势?
  14. X264_最简单的视频编码实现(YUV420编码H264)
  15. 【luogu3374】模板 树状数组 1
  16. Nginx的安装和设置
  17. css实现带边框,半透明气泡定位浮层效果
  18. win10 桌面颜色变成灰色
  19. xshell卸载不干净导致无法安装
  20. 计算机辅助设计职业标准,计算机辅助设计绘图员国家职业标准..doc

热门文章

  1. PAT常见错误及原因总结
  2. Ubuntu内核编译教程-编译Linux4.5.0内核
  3. 网络高手必备十款经典软件
  4. 《C++ Primer Plus》(第6版)第5章编程练习
  5. 思科C3750密码丢失重置恢复方法
  6. 暗黑游戏服务器列表为空,传奇单机版colon;暗黑破坏神2 服务器为空 | 手游网游页游攻略大全...
  7. 倩女幽魂服务器维修,《倩女幽魂2》2014年5月8日维护更新公告
  8. Unity3D开发的2D游戏---《趣味推箱子》
  9. java实现验证码demo
  10. 鸿蒙os 麒麟970,从4499跌至979元,昔日华为顶级旗舰降成二手价:麒麟970+鸿蒙OS!...