ADB 調試日志全攻略:如何開啟與關閉 ADB_TRACE
日志
ADB(Android Debug Bridge)是 Android 開發的核心工具,但在排查問題時,默認日志可能不夠詳細。通過設置環境變量 ADB_TRACE
,可以開啟 全量調試日志,幫助開發者定位問題。本文將詳細介紹如何開啟和關閉 ADB 日志,并解析常見場景。
1. 什么是 ADB_TRACE
?
ADB_TRACE
是 ADB 的一個環境變量,用于控制日志輸出的詳細程度。設置為 all
時,ADB 會打印所有模塊的調試信息(包括協議通信、設備連接、命令執行等),適用于:
- 調試 ADB 連接問題
- 分析設備通信異常
- 排查 ADB 命令失敗原因
2. 如何開啟 ADB 全量日志?
方法 1:臨時開啟(當前終端會話有效)
Windows (CMD/PowerShell)
:: 設置環境變量(僅當前會話有效)
set ADB_TRACE=all:: 執行任意 ADB 命令(如查看設備列表)
adb devices
Linux/macOS (Bash/Zsh)
# 設置環境變量(僅當前會話有效)
export ADB_TRACE=all# 執行任意 ADB 命令
adb devices
效果:
終端會輸出大量調試日志,例如:
adb trace: init: transport=usb
adb trace: protocol: sending 'host:devices'
adb trace: response: OKAY 1234567890
方法 2:永久開啟(不推薦)
如果需要長期開啟日志(如開發環境),可將變量寫入 Shell 配置文件:
Windows
- 打開 系統屬性 → 高級 → 環境變量。
- 在 用戶變量 中新建變量:
- 變量名:
ADB_TRACE
- 變量值:
all
- 變量名:
Linux/macOS
編輯 ~/.bashrc
或 ~/.zshrc
,添加:
export ADB_TRACE=all
然后執行:
source ~/.bashrc # 或 source ~/.zshrc
3. 如何關閉 ADB 日志?
方法 1:臨時關閉(當前終端會話)
Windows
:: 取消環境變量
set ADB_TRACE=:: 驗證日志是否關閉
adb devices
Linux/macOS
# 取消環境變量
unset ADB_TRACE# 驗證日志是否關閉
adb devices
效果:
日志輸出恢復為默認簡潔模式,僅顯示關鍵信息(如設備列表)。
方法 2:關閉終端后重新打開
環境變量僅在當前終端會話中生效,直接關閉終端窗口即可徹底關閉日志。
方法 3:永久關閉(如果已寫入配置文件)
如果 ADB_TRACE
被永久寫入系統環境變量或 Shell 配置文件,需手動刪除:
Windows
- 打開 環境變量 窗口,刪除
ADB_TRACE
變量。
Linux/macOS
編輯 ~/.bashrc
或 ~/.zshrc
,刪除或注釋以下行:
# export ADB_TRACE=all # 刪除或注釋此行
然后執行:
source ~/.bashrc
4. 臨時覆蓋變量(單次命令禁用日志)
如果不想修改環境變量,但希望某條命令不輸出日志,可以臨時覆蓋:
Windows
:: 單次命令禁用日志
set ADB_TRACE= & adb devices
Linux/macOS
# 單次命令禁用日志
ADB_TRACE="" adb devices
5. 常見問題解答
Q1:日志太多看不過來怎么辦?
- 使用
grep
過濾關鍵信息(Linux/macOS):adb devices 2>&1 | grep -i "error"
- 將日志重定向到文件:
adb devices > adb_log.txt 2>&1
Q2:為什么設置了 ADB_TRACE=all
但沒日志?
- 檢查 ADB 版本是否過舊(需 ≥ 1.0.32):
adb version
- 確保變量拼寫正確(區分大小寫)。
Q3:日志會影響 ADB 性能嗎?
- 會的!全量日志會顯著增加 I/O 和 CPU 負載,僅在調試時開啟。
6. 總結
操作 | 命令示例(Windows) | 命令示例(Linux/macOS) |
---|---|---|
開啟日志 | set ADB_TRACE=all | export ADB_TRACE=all |
關閉日志 | set ADB_TRACE= | unset ADB_TRACE |
臨時覆蓋 | set ADB_TRACE= & adb ... | ADB_TRACE="" adb ... |
永久生效 | 修改系統環境變量 | 編輯 ~/.bashrc |
推薦實踐:
- 調試問題時臨時開啟日志,完成后立即關閉。
- 避免在生產環境或低性能設備上長期開啟日志。