Android adb自身調試log開關

本文介紹下如何打開adb源碼中的debug log

1.adb源碼log是可以動態打開和關閉的,控制邏輯代碼如下

static NoDestructor<std::mutex> log_mutex;
static NoDestructor<CachedProperty> log_property GUARDED_BY(log_mutex)("debug.adbd.logging");
static std::optional<LogStatus> cached_log_status GUARDED_BY(log_mutex);static NoDestructor<CachedProperty> persist_log_propertyGUARDED_BY(log_mutex)("persist.debug.adbd.logging");
static std::optional<LogStatus> cached_persist_log_status GUARDED_BY(log_mutex);static LogStatus ParseLogStatus(std::string_view str) {LogStatus result = {};for (const auto& part : android::base::Split(std::string(str), ",")) {if (part == "cnxn") {result[adb::LogType::Connection] = true;} else if (part == "service") {result[adb::LogType::Service] = true;} else if (part == "shell") {result[adb::LogType::Shell] = true;} else if (part == "all") {result[adb::LogType::Connection] = true;result[adb::LogType::Service] = true;result[adb::LogType::Shell] = true;}}return result;
}static LogStatus GetLogStatus(android::base::CachedProperty* property,std::optional<LogStatus>* cached_status) REQUIRES(log_mutex) {bool changed;const char* value = property->Get(&changed);if (changed || !*cached_status) {**cached_status = ParseLogStatus(value);}return **cached_status;
}namespace adb {
bool is_logging_enabled(LogType type) {std::lock_guard<std::mutex> lock(*log_mutex);return GetLogStatus(log_property.get(), &cached_log_status)[type] ||GetLogStatus(persist_log_property.get(), &cached_persist_log_status)[type];
}
}  // namespace adb

2.配置方法

adb shell??setprop persist.debug.adbd.logging ?service? ?//打開LogType為service的log

例如:

daemon/services.cpp:262: ? ?ADB_LOG(Service) << "transport " << transport->serial_name() << " opening service " << name;

打開后執行adb remount,可以抓到如下log

I adbd    : transport UsbFfs opening service shell,v2,TERM=xterm-256color,raw:remount

?adb shell??setprop persist.debug.adbd.logging all? ? //打開所有logtype

3.打開adb trace log方法

adb shell setprop persist.adb.trace_mask 1
adb shell pkill adbd   //需要重啟adbd 生效

trace log會保存在/data/adb/文件夾下

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74707.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74707.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74707.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Axure RP 9.0教程: 基于動態面板的元件跟隨來實現【音量滑塊】

文章目錄 引言I 音量滑塊的實現步驟添加底層邊框添加覆蓋層基于覆蓋層創建動態面板添加滑塊按鈕設置滑塊拖動效果引言 音量滑塊在播放器類APP應用場景相對較廣,例如調節視頻的亮度、聲音等等。 I 音量滑塊的實現步驟 添加底層邊框 在畫布中添加一個矩形框:500 x 32,圓…

rocky linux 與centos系統的區別

Rocky Linux 和 CentOS 都是基于 Red Hat Enterprise Linux&#xff08;RHEL&#xff09;的社區發行版&#xff0c;但兩者在目標定位、更新策略和社區管理上有顯著差異。以下是核心區別的詳細對比&#xff1a; 一、背景與定位 特性Rocky LinuxCentOS起源由 CentOS 聯合創始人…

洛谷題單1-B2002 Hello,World!-python-流程圖重構

題目描述 編寫一個能夠輸出 Hello,World! 的程序。 提示&#xff1a; 使用英文標點符號&#xff1b;Hello,World! 逗號后面沒有空格。H 和 W 為大寫字母。 輸入格式 無 輸出格式 無 輸入輸出樣例 #1 輸入 #1 無輸出 #1 Hello,World!方式-print() 代碼 class Solut…

網絡基礎-路由器和交換機工作配置

三、路由器和交換機的工作原理配置以及華為體系下的小型網絡的搭建 3.1路由基礎 3.1.1數據轉發 通過鏈路層交換機和網絡層路由器進行數據轉發 交換機&#xff08;鏈路層&#xff09;mac地址表的數據轉發路由器&#xff08;網絡層&#xff09; ip路由表的數據轉發 隔離廣播域…

愛普生SG-3031CMA有源晶振在汽車雷達中的應用

隨著自動駕駛技術的普及&#xff0c;汽車雷達已成為高級駕駛輔助系統&#xff08;ADAS&#xff09;和自動駕駛系統的核心感知組件。雷達模塊需要精確的時鐘信號來確保發射/接收時序的準確性、信號處理的同步性以及低功耗運行。這些系統對時鐘信號的穩定性、抗干擾性及環境適應性…

案例實踐 | 招商局集團以長安鏈構建“基于DID的航運貿易數據資產目錄鏈”

概覽 案例名稱 基于DID的航運貿易數據資產目錄鏈 業主單位 招商局集團 上線時間 2024年10月 用戶群體 供數用數企業和個人 用戶規模 集團內20企業 案例背景 招商局集團深入落實“促進數據高效流通使用、賦能實體經濟”精神&#xff0c;深化集團數字化水平&#xff0c…

【docker】docker-compose安裝RabbitMQ

docker-compose安裝RabbitMQ 1、配置docker-compose.yml文件&#xff08;docker容器里面的目錄請勿修改&#xff09;2、啟動mq3、訪問mq4、查看服務器映射目錄5、踩坑5.1、權限不足 1、配置docker-compose.yml文件&#xff08;docker容器里面的目錄請勿修改&#xff09; versi…

Maven工具學習使用(二)——Maven基礎用法

pom常見屬性說明 詳細見官方文檔說明 https://maven.apache.org/ref/3.8.6/maven-model/maven.html#class_releases <modelVersion>4.0.0</modelVersion> POM模型的版本 <groupId>org.apache.maven.plugins</groupId> 項目屬于哪個組&#xff…

藍橋杯高頻考點——二分(含C++源碼)

二分 基本框架整數查找&#xff08;序列二分的模版題 建議先做&#xff09;滿分代碼及思路solution 子串簡寫滿分代碼及思路solution 1&#xff08;暴力 模擬雙指針70分&#xff09;solution 2&#xff08;二分 AC&#xff09; 管道滿分代碼及思路樣例解釋與思路分析solution 最…

【谷粒商城踩坑記】第五坑 拖拽組件三級菜單拖不了問題

第五坑 拖拽組件三級菜單拖不了問題 直接進入或刷新頁面后,拖動第三級菜單項,無法修改排序位置&#xff0c;我嘗試了直接用源碼包中提供的老師的代碼也不行&#xff0c;本身就有這個小 Bug &#xff0c;或者說是其它什么地方有問題。 原始內容是這樣的。 countNodeLevel(node){…

《深度剖析Android 12 SystemUI鎖屏通知布局亮屏流程:從源碼到實現》

優化后文章結構&#xff1a; 1. 前言 強調鎖屏通知布局的重要性及分析目的&#xff0c;引出后續源碼分析的必要性。 2. 核心類解析 KeyguardViewMediator&#xff1a;鎖屏核心邏輯控制&#xff0c;處理亮屏/息屏事件分發。 PhoneWindowManager&#xff1a;系統輸入事件&…

Android系統的安全問題 - Android的keymaster和gatekeeper

Android 的 Keymaster 和 Gatekeeper 是兩大關鍵安全組件,分別負責硬件級別的密鑰管理和設備解鎖認證。它們在 Android 的安全架構中扮演重要角色,尤其在支持 硬件級安全特性(如可信執行環境 TEE 或專用安全芯片)的設備上。以下是它們的詳細對比和功能解析: 1. Keymaster(…

springBoot中雪花算術法

在 Spring Boot 中&#xff0c;雪花算法&#xff08;Snowflake Algorithm&#xff09;通常指的是 Twitter 開發的一種分布式唯一 ID 生成算法。它被廣泛用于分布式系統中生成全局唯一的 ID&#xff0c;尤其是在高并發場景下。雪花算法生成的 ID 是一個 64 位的長整型數字&#…

鴻蒙開發之ArkTS聯合類型

在鴻蒙開發中&#xff0c;ArkTS是一種基于TypeScript的編程語言&#xff0c;專為鴻蒙應用開發而設計。聯合類型&#xff08;Union Types&#xff09;在ArkTS中是一個重要的概念&#xff0c;它允許一個變量存儲多種類型的數據&#xff0c;從而增加了代碼的靈活性&#xff0c;同時…

K8S學習之基礎五十五:k8s中jenkins部署blueOcean

jenkins部署blueOcean 安裝插件 BLUE OCEAN 之后會多出一個菜單&#xff0c;可以更詳細方便的查看pipeline流程

DeepSeek概述

一、DeepSeek概述 1.1 DeepSeek是什么 DeepSeek是一家專注 通用人工智能&#xff08;AGI&#xff0c;Artificial General Intelligence&#xff09;的中國科技公司&#xff0c;主攻大數據研發與應用。DeepSeek-R1是其開源的推理模型&#xff0c;擅長處理復雜任務且可免費商用…

學習記錄(14):iOS部署

時隔多年后&#xff0c;再次部署開發iOS&#x1f601;&#x1f601; 1. Unity端設置&#xff0c;在此不再進行贅述&#xff08;網上一大堆&#xff09; 2. ??&#xff1a;要保證mac比待部署的設備版本要高 3. Xcode: (1) 打開從 Unity 3D 里打包的文件中&#xff0c;找到有…

如何使用DeepSeek編寫測試用例?

一、DeepSeek在測試用例設計中的定位 DeepSeek作為AI工具,并非直接替代測試設計,而是通過以下方式提升效率: 快速生成基礎用例框架(等價類、邊界值等) 智能補充易遺漏場景(如特殊字符、異常流) 自動化腳本片段生成(Python/pytest/JUnit等) 測試數據構造建議(符合業務…

9.4分漏洞!Next.js Middleware鑒權繞過漏洞安全風險通告

今日&#xff0c;亞信安全CERT監控到安全社區研究人員發布安全通告&#xff0c;Next.js 存在一個授權繞過漏洞&#xff0c;編號為 CVE-2025-29927。攻擊者可能通過發送精心構造的 x-middleware-subrequest 請求頭繞過中間件安全控制&#xff0c;從而在未授權的情況下訪問受保護…

【前端】原生項目與框架項目區別

不定期更新&#xff0c;建議關注收藏點贊。 使用 HTML CSS JS 和 Vue 或 React 開發的項目各有其優勢與不足&#xff0c;適用于不同的場景。目前基本上都采用框架&#xff0c; 總結 何時選擇 HTML CSS JS&#xff1a; 適用于 小型項目、簡單靜態頁面、不需要復雜交互 或 …