Android hal 层 C 堆栈打印方法
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
添加头文件
#include "callstack.h"
在想要追查的方法中调用
dumping_callstack();
保存编译;
刷机、运行相关程序;
查看日志(关键字搜索)
得到栈堆信息 (栈下标、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 堆栈打印方法相关推荐
- Android 各层中日志打印功能的应用
Android 各层中日志打印功能的应用 1. HAL层 头文件:#include <utils/Log.h> 对应的级别 打印方法 VERBOSE LOGV() DEBUG LOG ...
- Android Hal层简要分析
Android Hal层简要分析 Android Hal层(即 Hardware Abstraction Layer)是Google开发的Android系统里上层应用对底层硬件操作屏蔽的一个软件层次, ...
- Android 系统(4)---Android HAL层与Linux Kernel层驱动开发简介
Android HAL层与Linux Kernel层驱动开发简介 近日稍微对Android中的驱动开发做了一些简要的了解,稍稍理清了一下Android驱动开发的套路,总结一下笔记. HAL:Hardw ...
- Android HAL层与Linux Kernel层驱动开发简介
Android HAL层与Linux Kernel层驱动开发简介 阅读数:5070 近日稍微对Android中的驱动开发做了一些简要的了解,稍稍理清了一下Android驱动开发的套路,总结一下笔记. ...
- Android HAL 层,三个重要的结构体的源码~
最近在学习android HAL 层 ~ 离不开这三个数据结构~~先贴出来 typedef struct hw_module_t { /** tag must be initialized t ...
- 【转】android hal 层GPS 研究总结——关于GPS GGA/GSV/RMC 数据的解析
[转]android hal 层GPS 研究总结 2011-09-22 快跑的未必能赢,力战的未必获胜,聪明的未必得粮食,明哲的未必得资财,灵活的未必得喜悦.所临到世人的,是在乎当时的机会. 人生一世 ...
- Android HAL层/native C程序打印栈信息方法
在调试Android系统底层函数时,经常需要跟踪函数调用流程,特别在HAL层需要确定参数来源时.使用栈信息逆向跟踪可快速分析函数调用流程,结合使用addr2line工具.绘图工具可绘制函数关系图.本文 ...
- Android Hal层回调APP应用接口
前面文章讲述了Android APP怎么调用hal层的方法,和Android系统自带的灯光子系统类似:本文将讲述hal层如何回调APP应用接口,和android系统振动传感器数据上报类似,同时本文也会 ...
- Android HAL层到驱动代码搜索---基于背光亮度的调试
以前阅读源码时一般只阅读到fwk层部分,近期因为一个问题,想顺便把fwk层到hal 到驱动的调用关系都看下.在此做下记录. 原始问题是客户嫌屏幕调到最大亮度后仍然觉得亮度不够亮,让看看能不能把亮度调亮 ...
最新文章
- 第15届全国大学生智能汽车竞赛 人工智能创意赛(预赛)
- BZOJ2584 : [Wc2012]memory
- 急速JavaScript全栈教程
- ubuntu12.04下NFS链接开发板并测试交叉编译的第一个应用
- SDUT_2116 数据结构实验之链表一:顺序建立链表
- mysql 的独占锁和排它锁_MySQL的排它锁与共享锁
- linux 如何打包分区文件,Linux基础------文件打包解包---tar命令,文件压缩解压---命令gzip,vim编辑器创建和编辑正文件,磁盘分区/格式化,软/硬链接...
- git php自动发布,使用 Git Hooks 实现自动部署PHP项目
- java怎么写事件listener_java 事件监听器ActionListener
- Java学习笔记2.3.4 运算符与表达式 - 逻辑运算符
- POI生成Web版Word文件
- Spark-Kudu报错:kudu.client.NonRecoverableException: The table was deleted: Table deleted at xxx
- gradle是干什么_gradle和ant等构建工具有什么核心优势?
- X264_最简单的视频编码实现(YUV420编码H264)
- 【luogu3374】模板 树状数组 1
- Nginx的安装和设置
- css实现带边框,半透明气泡定位浮层效果
- win10 桌面颜色变成灰色
- xshell卸载不干净导致无法安装
- 计算机辅助设计职业标准,计算机辅助设计绘图员国家职业标准..doc
热门文章
- PAT常见错误及原因总结
- Ubuntu内核编译教程-编译Linux4.5.0内核
- 网络高手必备十款经典软件
- 《C++ Primer Plus》(第6版)第5章编程练习
- 思科C3750密码丢失重置恢复方法
- 暗黑游戏服务器列表为空,传奇单机版colon;暗黑破坏神2 服务器为空 | 手游网游页游攻略大全...
- 倩女幽魂服务器维修,《倩女幽魂2》2014年5月8日维护更新公告
- Unity3D开发的2D游戏---《趣味推箱子》
- java实现验证码demo
- 鸿蒙os 麒麟970,从4499跌至979元,昔日华为顶级旗舰降成二手价:麒麟970+鸿蒙OS!...