native 添加堆栈

news2024/9/23 9:35:16

第一种方法


montecarloh53b getVehicleModel:default
error: frameworks/native/services/surfaceflinger/Android.bp:248:1: module "surfaceflinger" variant "android_arm64_armv8-a": depends on //system/unwinding/libbacktrace:libbacktrace which is not visible to this module
You may need to add "//frameworks/native/services/surfaceflinger" to its visibility
09:58:02 soong bootstrap failed with: exit status 1

diff --git a/libbacktrace/Android.bp b/libbacktrace/Android.bp
index af14cde..38ea6f5 100644
--- a/libbacktrace/Android.bp
+++ b/libbacktrace/Android.bp
@@ -128,6 +128,7 @@ cc_library {
         "//packages/modules/Bluetooth/system/gd",
         "//system/core/init",
         "//system/core/libutils",
+        "//frameworks/native/services/surfaceflinger",
     ],
     min_sdk_version: "apex_inherit",

添加头文件和库

index 000a2cb0d3..f99582d469 100644
--- a/services/surfaceflinger/Android.bp
+++ b/services/surfaceflinger/Android.bp
@@ -69,6 +69,7 @@ cc_defaults {
         "libui",
         "libinput",
         "libutils",
+        "libbacktrace",
         "libSurfaceFlingerProp",
         "server_configurable_flags",
     ],
@@ -84,6 +85,7 @@ cc_defaults {
         "libshaders",
         "libtonemap",
         "libtrace_proto",
+        "libSFTest",
     ],
     header_libs: [
         "android.hardware.graphics.composer@2.1-command-buffer",
@@ -177,6 +179,7 @@ filegroup {
         "RefreshRateOverlay.cpp",
         "RegionSamplingThread.cpp",
         "RenderArea.cpp",
+        "Scheduler/MyTestRef.cpp",
         "Scheduler/DispSyncSource.cpp",
         "Scheduler/EventThread.cpp",
         "Scheduler/FrameRateOverrideMappings.cpp",
@@ -255,6 +258,9 @@ cc_binary {
     shared_libs: [
         "libSurfaceFlingerProp",
     ],
+    header_libs: [
+        "libscheduler_headers",
+    ],
 
     

添加头文件和调用

+++ b/services/surfaceflinger/BufferQueueLayer.cpp
@@ -34,6 +34,12 @@
 #include "Scheduler/LayerHistory.h"
 #include "TimeStats/TimeStats.h"
 
+#undef LOG_NDEBUG
+#define LOG_NDEBUG 1
+#include <utils/Log.h>
+//#include <utils/CallStack.h>
+#include "CallStack.h"
+
 namespace android {
 using PresentState = frametimeline::SurfaceFrame::PresentState;
 
@@ -444,6 +450,9 @@ void BufferQueueLayer::onSidebandStreamChanged() {
 void BufferQueueLayer::onFirstRef() {
     BufferLayer::onFirstRef();
 
+    CallStack cs;
+    cs.log("setMaxDequeueBuffer");
+

 创建 CallStack.h 文件
 16 
 17 #pragma once
 18 
 19 #include <backtrace/Backtrace.h>
 20 #include <log/log.h>
 21 
 22 #include <memory>
 23 
 24 class CallStack {
 25 public:
 26     // Create a callstack with the current thread's stack trace.
 27     // Immediately dump it to logcat using the given logtag.
 28     static void log(const char* logtag) noexcept {
 29         std::unique_ptr<Backtrace> backtrace(
 30                 Backtrace::Create(BACKTRACE_CURRENT_PROCESS, BACKTRACE_CURRENT_THREAD));
 31         if (backtrace->Unwind(2)) {
 32             for (size_t i = 0, c = backtrace->NumFrames(); i < c; i++) {
 33                 __android_log_print(ANDROID_LOG_ERROR, logtag, "%s",
 34                                     backtrace->FormatFrameData(i).c_str());
 35             }
 36         }
 37     }
 38 };
~                                                                                                                                      
~  

第二种方法:

添加库和头文件库

+++ b/services/surfaceflinger/Android.bp
@@ -69,6 +69,7 @@ cc_defaults {
         "libui",
         "libinput",
         "libutils",
+        "libcutils",
         "libSurfaceFlingerProp",
         "server_configurable_flags",
     ],
@@ -91,6 +92,7 @@ cc_defaults {
         "android.hardware.graphics.composer@2.3-command-buffer",
         "android.hardware.graphics.composer@2.4-command-buffer",
         "android.hardware.graphics.composer3-command-buffer",
+        "libutils_headers",
     ],
     export_static_lib_headers: [
         "libcompositionengine",
@@ -125,9 +127,7 @@ cc_defaults {
     whole_program_vtables: true, // Requires ThinLTO
     afdo: true,
     // TODO(b/131771163): Fix broken fuzzer support with LTO.
-    sanitize: {
-        fuzzer: false,
-    },
+    sanitize: {never:true,},
 }
 
 cc_library_headers {
@@ -227,6 +227,7 @@ cc_defaults {
         "libprocessgroup",
         "libsync",
         "libutils",
+        "libutilscallstack",
     ],
     static_libs: [
         "libserviceutils",

代码添加头文件和代码

+++ b/services/surfaceflinger/BufferQueueLayer.cpp
@@ -34,6 +34,11 @@
 #include "Scheduler/LayerHistory.h"
 #include "TimeStats/TimeStats.h"
 
+#undef LOG_NDEBUG
+#define LOG_NDEBUG 1
+#include <utils/Log.h>
+#include <utils/CallStack.h>
+
 namespace android {
 using PresentState = frametimeline::SurfaceFrame::PresentState;
 
@@ -444,6 +449,10 @@ void BufferQueueLayer::onSidebandStreamChanged() {
 void BufferQueueLayer::onFirstRef() {
     BufferLayer::onFirstRef();
 
+    android::CallStack cs("setMaxDequeueBuffer",10);
+    cs.update(10);
+    cs.log("setMaxDequeueBuffer",ANDROID_LOG_ERROR,"=========");
+

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2084782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YarnClient发送和接收请求源码解析

YarnClient发送和接收请求流程 Yarn是通过RPC协议通信的&#xff0c;协议类型可以通过查看RpcKind类得知&#xff0c;总共有三种类型&#xff1a; RPC_BUILTIN ((short) 1), // Used for built in calls by tests RPC_WRITABLE ((short) 2), // Use WritableRp…

CentOS 7安装和配置 NFS

前言 NFS 是 Network File System 的缩写&#xff0c;即网络文件系统。功能是让客户端通过网络访问不同主机上磁盘里的数据&#xff0c;主要用在类 Unix 系统上实现文件共享的一种方法。本例演示 CentOS 7 下安装和配置 NFS 的基本步骤。 环境说明 CentOS 7&#xff08;Mini…

Agent Q介绍:具有规划和自愈能力的下一代人工智能代理的研究突破

近年来&#xff0c;大型语言模型&#xff08;LLM&#xff09;的功能已经改变了自然语言处理和理解&#xff0c;取得了令人瞩目的里程碑式成就。尽管取得了这些进步&#xff0c;大型语言模型在交互环境中仍面临巨大挑战&#xff0c;尤其是在需要多步骤推理的任务中&#xff0c;如…

变电站智能巡检机器人:构建智能化电力运维新模式

随着现代电力系统规模的不断扩大&#xff0c;变电站作为电力输送和分配的关键节点&#xff0c;面临着越来越高的运维要求。传统的人工巡检方式存在效率低、劳动强度大、安全隐患多等问题&#xff0c;无法满足日益复杂的电力系统需求。在此背景下&#xff0c;变电站智能巡检机器…

偷偷用了这10款AI写作神器,再也没加过班!

前言 [ 自2022年Chat-GPT在全球掀起AI革命浪潮&#xff0c;AI开始在内容的生产方式进行颠覆性改变。 其中&#xff0c;AI写作工具的崛起&#xff0c;为内容创作者打开了一个全新创作世界&#xff0c;无论用户在办公写作、自媒体写作还是兴趣写作&#xff0c;在效率方面都得到…

【数据结构】优先级队列 — 堆

文章目录 前言1. 优先级队列1.1 概念1.2 特性 2. 堆2.1 概念2.2 存储方式 3. 堆的模拟实现3.1 堆的创建3.2 堆的插入3.3 堆的删除 4. PriorityQueue4.1 注意事项4.2 构造器介绍4.3 常用方法介绍 5. 经典题型6. 结语 前言 我们之前学习过队列&#xff0c;它是遵循先进先出原则的…

云上Oracle 数据库本地备份部署测试

1.说明 由于运行在云上的Oracle数据库暂无本地备份&#xff0c;为了保障租户业务系统的可持续性以及数据安全&#xff0c;特此进行数据库备份本地部署并进行测试。 2.备份策略 &#xff08;1&#xff09;数据库数据量 SQL> select sum(bytes)/1024/1024/1024 from dba_segme…

自建电商网站整合Refersion教程

前言&#xff1a;   先介绍一下Refersion有啥用&#xff0c;如果你有一个自己的跨境电商独立站点&#xff0c;想找一些网红帮忙推广销售自己的商品&#xff0c;然后按照转化订单比例给网红支付佣金&#xff0c;这件事情对双方来说透明性和实时性很重要&#xff0c;Refersion就…

《多模态大规模语言模型基准》综述

论文链接&#xff1a;https://arxiv.org/pdf/2408.08632 MLLM&#xff1a;Multimodal Large Language Models 评估多模态大型语言模型&#xff08;MLLMs&#xff09;的重要性体现在以下几个方面&#xff1a; 1. 理解模型能力&#xff1a;通过评估&#xff0c;研究人员和开发…

攀高行为检测识别摄像机

攀高行为检测识别摄像机 是一种结合了图像识别技术和智能算法的设备&#xff0c;旨在监测和识别人员在高空作业中的攀高行为&#xff0c;及时发现潜在的安全隐患并提供预警。这种摄像机可以有效提高工作场所的安全管理水平&#xff0c;减少高空作业事故的发生。 攀高行为检测识…

微软CEO谈AI平台范式转移、AI发展趋势及资本市场动态

为大家整理编辑了近期微软CEO萨提亚纳德拉 (Satya Nadella)著名科技KOLBen Thompson播客采访的精华内容。 在采访中&#xff0c;萨提亚纳德拉 (Satya Nadella)畅谈了人工智能平台范式转移、与Open AI等合作伙伴的关系、AI未来五年的发展方向、以及资本市场的趋势。 萨提亚纳德…

VUE3生命周期钩子

生命周期 vue2的生命周期钩子 beforeCreate&#xff1a;开始初始化事件和生命周期&#xff0c;但还没有data、methods、computed、watch属性&#xff0c;也就是vue实例的挂载元素$el和数据对象data都为undefined&#xff0c;还未初始化。 created&#xff1a;实完成数据挂载、…

PowerBi 柱形图,数据标签无法显示在端外

如图 即使设置了“数据标签”显示“端外“&#xff0c;仍然不作用。 原因其实是因为Y轴的数据范围设置不当&#xff0c;如图&#xff0c;当前Y轴范围是0到自动 只需要修改为最大和最小值都是自动即可&#xff0c;选中0 按backspace键删除&#xff0c;然后&#xff0c;鼠标在任意…

Parade Series - 3D Modeling

FBX FBX&#xff08;Filmbox&#xff09;文件格式是一种广泛使用的三维模型和动画文件格式&#xff0c;由Autodesk开发和维护。 FBX格式支持多种3D数据类型&#xff0c;包括几何、材质、纹理、动画、骨骼、灯光和摄像机等;OBJ MTL OBJ文件格式是一种用于表示三维几何形状的标…

OpenAI 神秘模型「草莓」预计今秋推出,ChatGPT 将迎重大升级|TodayAI

有外媒报道指出&#xff0c;OpenAI 内部代号为「Strawberry&#xff08;草莓&#xff09;」的 AI 模型即将在今年秋季面世。这一消息引发了业内广泛关注&#xff0c;被认为可能会为 ChatGPT 带来今年最重要的升级。 「草莓」模型的强大能力与应用潜力 据《The Information》报…

EPLAN中绘制黑盒的具体方法

EPLAN中绘制黑盒的具体方法 对于某些电气元件没有EDZ部件库时,可以自己绘制黑盒来解决,具体方法可参考以下内容: 如下图所示,打开EPLAN软件,在项目中新建一页多线原理图, 如下图所示,点击插入----盒子/连接点/安装板--------黑盒, 设置所需的参数和属性,然后放置在图框绘制…

算法入门-深度优先搜索1

第六部分&#xff1a;深度优先搜索 144.二叉树的前序遍历&#xff08;简单&#xff09; 题目&#xff1a;给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3] 第一种思路&am…

AtCoder Beginner Contest 366(D~E题解)

闲来无事去vp了一下之前放假没打的比赛&#xff0c;感觉需要总结的也就这两题吧&#xff0c;a&#xff0c;c都是水题&#xff0c;b只不过是实现有一点难&#xff0c;并不是很难写&#xff0c;d是一个需要自己推的三维前缀和&#xff0c;e也是一种前缀和&#xff0c;我当时没想到…

WEB渗透Win提权篇-白名单提权

提权工具合集包&#xff08;免费分享&#xff09;&#xff1a; 夸克网盘分享 往期文章 WEB渗透Win提权篇-提权工具合集-CSDN博客 WEB渗透Win提权篇-RDP&Firewall-CSDN博客 WEB渗透Win提权篇-MSSQL-CSDN博客 WEB渗透Win提权篇-MYSQL-udf-CSDN博客 WEB渗透Win提权篇-Acc…

什么是代码审查(Code Review)?它有什么好处?

代码审查&#xff08;Code Review&#xff09;是软件开发过程中一个至关重要的环节&#xff0c;它指的是团队成员之间相互检查、评估代码的过程。这一过程不仅涉及对代码质量的把控&#xff0c;更是提升团队整体编程能力、确保软件安全性的重要手段。在本文中&#xff0c;我们将…