Android C++层打印调用堆栈

Android下堆栈信息打印 kernel层 linux kernel中有堆栈打印的API接口dump_stack,直接调用即可;dump_stack的实现在kernel中的msm-3.18/lib/dump_stack.c 和msm-3.18/kernel/printk/printk.c。 //在需要打印的堆栈信息的函数中加入即可 dump_stack(); c文件中打印 c语言中的堆栈信息打印,需要自己实现接口,接... 阅读详情

调试一个Camera2 App 录像时拔掉USB摄像头至无响应的bug

分析它和正常逻辑的调用区别,须要打印c++的调用堆栈.

1.#include <utils/CallStack.h>

    android::CallStack stack;
    stack.update();
    stack.dump(1);
    //输出到printf
    stack.log("luke_dsfdsfds");

或
    stack.log("satcklog", ANDROID_LOG_ERROR, "stackdump:");

然后Android.bp的

shared_libs:加上一行

"libutilscallstack",

参考资料来源

undefined reference to ‘android::CallStack::CallStack_dp__mcu的专栏-CSDN博客

android 里面添加打印调用堆栈_画饼人的博客-CSDN博客_libutilscallstack

2021-12-06 17:28:33.320 3369-5547/? D/CameraSource: Set stoptime: 257099790 us
2021-12-06 17:28:33.363 3369-5547/? D/luke_dsfdsfds: #00 pc 0006701f  /system/lib/libstagefright.so (android::CameraSource::setStopTimeUs(long long)+74)
2021-12-06 17:28:33.363 3369-3958/? D/CameraSource: onFrameAvailable: onFrameAvailable
2021-12-06 17:28:33.363 3369-5547/? D/luke_dsfdsfds: #01 pc 00091899  /system/lib/libstagefright.so (android::MediaCodecSource::Puller::onMessageReceived(android::sp<android::AMessage> const&)+456)
2021-12-06 17:28:33.363 3369-5547/? D/luke_dsfdsfds: #02 pc 0000d3e9  /system/lib/libstagefright_foundation.so (android::AHandler::deliverMessage(android::sp<android::AMessage> const&)+24)
2021-12-06 17:28:33.363 3369-5547/? D/luke_dsfdsfds: #03 pc 0000fcd9  /system/lib/libstagefright_foundation.so (android::AMessage::deliver()+60)
2021-12-06 17:28:33.363 3369-5547/? D/luke_dsfdsfds: #04 pc 0000e0c1  /system/lib/libstagefright_foundation.so (android::ALooper::loop()+476)
2021-12-06 17:28:33.363 3369-5547/? D/luke_dsfdsfds: #05 pc 0000c1bf  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+286)
2021-12-06 17:28:33.363 3369-5547/? D/luke_dsfdsfds: #06 pc 00063c15  /system/lib/libc.so (__pthread_start(void*)+22)
2021-12-06 17:28:33.363 3369-5547/? D/luke_dsfdsfds: #07 pc 0001e065  /system/lib/libc.so (__start_thread+22)
2021-12-06 17:28:33.363 3369-5547/? E/satcklog: stackdump:#00 pc 0006701f  /system/lib/libstagefright.so (android::CameraSource::setStopTimeUs(long long)+74)
2021-12-06 17:28:33.363 3369-5547/? E/satcklog: stackdump:#01 pc 00091899  /system/lib/libstagefright.so (android::MediaCodecSource::Puller::onMessageReceived(android::sp<android::AMessage> const&)+456)
2021-12-06 17:28:33.363 3369-5547/? E/satcklog: stackdump:#02 pc 0000d3e9  /system/lib/libstagefright_foundation.so (android::AHandler::deliverMessage(android::sp<android::AMessage> const&)+24)
2021-12-06 17:28:33.363 3369-5547/? E/satcklog: stackdump:#03 pc 0000fcd9  /system/lib/libstagefright_foundation.so (android::AMessage::deliver()+60)
2021-12-06 17:28:33.363 3369-5547/? E/satcklog: stackdump:#04 pc 0000e0c1  /system/lib/libstagefright_foundation.so (android::ALooper::loop()+476)
2021-12-06 17:28:33.363 3369-5547/? E/satcklog: stackdump:#05 pc 0000c1bf  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+286)
2021-12-06 17:28:33.363 3369-5547/? E/satcklog: stackdump:#06 pc 00063c15  /system/lib/libc.so (__pthread_start(void*)+22)
2021-12-06 17:28:33.363 3369-5547/? E/satcklog: stackdump:#07 pc 0001e065  /system/lib/libc.so (__start_thread+22)

android hal层 c 堆栈打印方法 ----CallStack,audio_hw.c android hal层 c 堆栈打印方法 比如要追踪 hardware/qcom/audio/hal/audio_hw.c 中adev_set_mode() 函数的函数堆栈调用关系 实际原理就是利用c++ callstack 库,重新编译成c库后使用即可. 1. 在hardware/qcom/audio/hal/ 下添加 callstack.cpp 和 callstack.h文件 cal... 阅读详情

相关推荐

B站DRM视频解密流程实战解析:从密钥获取到播放全流程

本文详细解析了B站DRM视频的解密全流程,从识别加密视频、捕获关键网络请求(如playurl接口的widevine_pssh数据),到逆向分析DRM SDK的JavaScript执行逻辑,最终手动模拟EME流程获取解密密钥,并使用mp4decrypt和ffmpeg工具完成视频文件的解密与合并。文章为开发者提供了从密钥获取到播放的完整实战指南。

weixin_29290379的博客 827

Android framework C/C++中打印堆栈

有时候我们需要有这样的需求,需要在某些函数中打印函数的调用路径,经过查询主要有四种方式实现。

qq_35993502的博客 3800

高校学籍管理系统(SQL Server数据库课程设计)

摘要: 高校的管理工作是一项复杂且系统化的工作。而随着当代社会积极响应国家“科教兴国”的战略。高校建设规模和招生人数每年均高不下,庞大的学生群体对高校的管理工作带来了巨大的挑战。而对学生的学籍管理工作更是高校管理工作的一个重要环节。 面对高校学生学籍信息如此庞大的数据群,如采用传统的管理模式,管理工作的效率不仅低下,而且数据错误的发生率相对较高,还会产生人力和物力上的巨大开支。面对这样的情况,开发一个高校学籍管理系统就显得尤为重要。 运用高校学籍管理系统可以大大提高高校管理工作效率、方便系统维护、减小开支、

qq_52030824的博客 7万+

android Native C++打印堆栈

1.在要打印堆栈的模块中添加libutilscallstack、libutils两个共享库依赖,有可能是Android.mk,也有可能是Android.bp。记录一下Android堆栈打印方法,程序运行堆栈在分析代码运行逻辑中非常有用。注意CallStack 在android名字空间中。

柏鑫的博客 3382

基于Simulink的自适应反步法(Adaptive Backstepping)控制​

本文针对非线性系统控制中未知参数和强非线性耦合的挑战,提出基于Simulink的自适应反步法解决方案。通过融合参数在线估计与反步递归设计,该方法显著提升了永磁同步电机(PMSM)速度控制的鲁棒性,使跟踪误差从20%降至3%,参数估计收敛时间小于0.5秒。文章详细阐述了从算法推导到Simulink实现的完整流程,包括系统架构设计、核心算法推导(以PMSM为例)、模块化建模方法、参数优化策略以及工程部署建议。提供的自适应控制器MATLAB代码和关键参数表可直接应用于实际工程,为电机驱动、机械臂等非线性系统控制提

xiaoheshang_123的博客 97

还在用 RaiDrive/Rclone 挂载网盘?教您使用Windows 原生 WebDAV 丝滑直连 AList/Openlist,让你的网盘秒变本地硬盘!

网盘文件分散管理?😩 别再依赖第三方工具了!本文教你如何在 Windows 下,利用原生 WebDAV 功能,将 Openlist 网盘直接映射为本地硬盘!💻 操作简单,告别繁琐,让你的云端文件像本地文件一样丝滑!🚀 轻松实现高效管理,快来体验吧!

XiaoqiangClub的博客 2943

android c++打印堆栈

比如在BufferQueueConsumer.cpp打印堆栈。

fuyinghaha的专栏 960

随机优化 (Stochastic Optimization) 算法详解及案例分析

随机优化是一种用于处理包含随机变量的优化问题的方法。其目标是通过考虑随机变量的概率分布,找到一个在期望意义下最优的解。

闲人编程的博客 4159

android C++打印堆栈

但是在C++模块中能打印调用堆栈吗?怎么打印调用栈呢?

fred专栏 959

华为od 面试八股文_测试/测试开发_02_含答案

华为od 面试八股文_测试/测试开发_02_含答案

MISAYAONE的博客 2151

bevformer详解(3): 逐行代码讲解

在这篇文章中,我们将从BEVFormer算法代码入手,深入探究BEV转换的流程。BEVFormer是一种基于Transformer的BEV转换模型,其核心思想是利用自注意力机制和交叉注意力机制,从,并通过Object Query与BEV特征的交互,完成3D目标检测和地图分割等任务。https://developer.baidu.com/article/details/3224715bevformer的网络结构由三部分组成, 模型结构所示,其中的是部分,对于的是的结构,对于部分,沿用的中的decoder部分,

@bangbang的博客 3688

android c++ 打印堆栈

2. 追加头文件#include <utils/CallStack.h>shared_libs中追加libutilscallstack。

Rainman博的专栏 603

华为OD机试真题 新系统 9月16号 【统计特殊数字】

华为OD新系统机试真题【统计特殊数字】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【统计特殊数字】。

qq_45776114的博客 741

android打印调用栈的方法

打印调用栈是android平台问题定位的基本方法,如果需要知道谁在调用某个函数,可以在此函数中添加打印调用栈函数,弄清楚函数之间的调用关系。 1. Java层打印调用栈方法 RuntimeException here = new RuntimeException("here"); here.fillInStackTrace(); Log.w(TAG, "Called: " + th

xzhang76 8978

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android下打印调用栈

1. Java层如何打印调用栈? 在优化Android启动过程时,同事给出一种打印出调用栈的函数。分享一下     java.util.Map ts = Thread.getAllStackTraces();        StackTraceElement[] ste = ts.get(Thread.currentThread());        for (StackTrace

happy08god的专栏 4956

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Android 堆栈打印

Android 堆栈打印Java层C++层Kernel Java层 方式 一 Slog.d(TAG, Log.getStackTraceString(new Throwable())); 方式 二 Exception e = new Exception("this is a log"); e.printStackTrace(); 方式 三 RuntimeException e = new RuntimeException(); e.fillInStackTrace

zjbeaner的博客 502

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android打印调用栈

打印调用栈是android平台问题定位的基本方法,如果需要知道谁在调用某个函数,可以在此函数中添加打印调用栈函数,弄清楚函数之间的调用关系。 1.Java层打印调用栈方法 RuntimeException here = new RuntimeException("here"); here.fillInStackTrace(); Log.w(TAG, "Called: " + thi

专注 专心 专业 1166

android 里面添加打印调用堆栈

1. Android.bp文件 shared_libs: [ "libbacktrace", "libutilscallstack", ] 如果是Android.mk文件,添加 LOCAL_SHARED_LIBRARIES += libcutils libutils 2. Native层的头文件上添加 #include<utils/CallStack.h&g...

画饼人的博客 3227

android堆栈打印

android系统堆栈打印 一. java层 Java 堆栈打印:Log.d(TAG,Log.getStackTraceString(new Throwable())); 二.C++层堆栈打印 #include <utils/CallStack.h> android::CallStack stack(LOG_TAG); 加入库 libutilscallstack.so 三....

lieye_leaves的专栏 835

Android动态调试程序

以前在chinaunix上发过一遍同样的文章,原文内容如下(http://blog.chinaunix.net/uid-23738462-id-3244927.html): 写程序的话,只要有思路,实现起来不会太难,而我们经常要做的是读别人的程序,自己写的程序如果没有好的注释的话,过一段时间以后,尚且不知道当时为什么这么写,何况是别人写的呢?在读别人程序的时候,弄清楚程序的流程是很重要的,输出程

oujunli的专栏 5284

【Android Debug】跨平台堆栈打印实战:从Java到Native C++的调试技巧

本文详细介绍了Android开发中跨平台堆栈打印的实战技巧,涵盖从Java到Native C++的调试方法。通过具体代码示例和案例分析,帮助开发者快速定位Java与Native代码交互中的问题,提升调试效率。特别强调了Android O前后版本的变化及跨语言堆栈关联分析的重要性。

weixin_29207149的博客 374

Android15 HAL层打印函数调用关系

include <execinfo.h> //引用的头文件//获取调用栈,函数指针形式//将函数指针转成字符串i < nptrs;

hongyeying的专栏 304

跟踪Android callback 调用堆栈

0 在调试 android  系统时可以通过打印调用堆栈 callback stack 来分析和解决android问题。1 java 层打印callback stack 可以通过 catch exception 然后 使用 Log.w(LOGTAG, Log.getStackTraceString(throwable)) 打印调用堆栈Throwable throwable = new Throwa

大海蓝天的专栏 821

Android打印函数调用栈的一种debug方式

在开发或者解决缺陷过程中,有时候需要梳理函数的调用流程,一种方式是通过全局查找函数,但遇到一些同名的函数或者多个地方都调用的时候就需要通过增加打印等方式来进行判断,本文提供另一种通过打印函数调用栈的方式来查看函数的调用流程。

qq_42423646的博客 425

android c++ 打印调用堆栈

cpp 1. 头文件 #include #include #include 2.源文件 android::CallStackstack; stack.update(1, gettid()); stack.log("satcklog", ANDROID_LOG_ERROR, "stackdump:"); 或 stack.log("satcklog",(android_LogPriority)6, "stackdump:"); CallStack 的具体定义见: system/core/l...

峻峰飞阳的博客 blog.csdn.net/while0 1197

android如何在C++中打印调用堆栈

android原代码中提供了打印堆栈的接口,具体调用如下: (1)包含头文件 #include   //该头文件位于/system/core/utils中 (2)在需要打印堆栈的位置如下调用 android:CallStack stack; stack.update(); stack.log(LOGTAG);    //其中LOGTAG为在log中显示的日志标签

每天学习一点点,每天记录一点点 4747
上一篇: Amlogic USB触摸设备插hub再插板不识别的bug
下一篇: Amlogic编译莫名其妙未提交代码丢失的问题
glunoy
博客等级 码龄20年 421粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值