1. 程式人生 > >android的除錯技巧,尤其是nativec等底層程式

android的除錯技巧,尤其是nativec等底層程式

在Android的應用開發中,我們會用到各種程式碼除錯;其實在Android的開發之後,我們可能會碰到一些隨機的問題,如cpu過高,記憶體洩露等,我們無法簡單的進行程式碼除錯,我們需要一個系統日誌等等,下面我把握工作中碰到的幾個常用命令和方法給大家演示實踐一下。

1.logcat命令
這個命令最簡單常用,可檢視幫助,我不多說,如果需要列印時間,加引數-v time

?
1 adb logcat -v time

2.bugreport命令
這個命令也非常簡單,但是在實際應用中非常有用,會有從開機之後詳細的dumpsys,dumpstate和logcat資訊,是一份完整的日誌記錄。對分析使用者行為,異常資訊,系統狀態有很大的參考作用。一般我們會把bugreport匯出到電腦上分析。

?
1 adb bugreport > xxx.log

我再次強調,bugreport裡面包含豐富的系統和使用者資訊,它是其他很多命令輸出的結果的記錄,非常有用。

3.dumpsys命令
這個檢視系統資訊,用的還是比較多的.

?
1 2 3 4 5 6 7 dumpsys [options] meminfo 顯示記憶體資訊 cpuinfo 顯示CPU資訊 account 顯示accounts資訊
activity 顯示所有的activities的資訊 window 顯示鍵盤,視窗和它們的關係 wifi 顯示wifi資訊

例如檢視某個程式記憶體資訊:

?
1 2 #檢視應用com.tianxia.test的記憶體使用情況 adb shell dumpsys meminfo com.tianxia.test

效果圖如下:

裡面的資訊很有價值,尤其對於分析記憶體洩露,記憶體溢位都有極大的作用。

4.top命令
這個檢視cpu資訊太方便了。

?
1 top -m 5 -t

我們看看效果圖,其中按cpu大小列出5個程序列表。

com.tianxia.test的cpu過高,會導致手機發燙。同時利用這個資訊,可以監控應用cpu的使用,以調整優化程式碼。

5.配置檔案local.prop
目前網上沒有查到local.prop的配置使用,工作中本人只使用過如下:

?
1 log.tag.SQLiteStatements=VERBOSElog.tag.SQLiteTime=VERBOSE

把上述文字加到/data/local.prop中,如果沒有這個檔案自行建立。然後重啟手機,就能看到每個應用詳細的查詢資料庫的sql語句資訊,對於除錯資料庫,分析和優化資料庫sql異常非常有用。

6.分析手機發燙
下面我們來實踐一個例子,手機發燙太厲害,怎麼找出問題?
首先我們寫一個程式com.tianxia.test,死迴圈,核心程式碼如下:

?
1 2 3 4 5 6 7 8 @Override public 

相關推薦

android除錯技巧尤其nativec底層程式

在Android的應用開發中,我們會用到各種程式碼除錯;其實在Android的開發之後,我們可能會碰到一些隨機的問題,如cpu過高,記憶體洩露等,我們無法簡單的進行程式碼除錯,我們需要一個系統日誌等等,下面我把握工作中碰到的幾個常用命令和方法給大家演示實踐一下。 1.logcat命令 這個

前端程式設計師不知道的14個JavaScript除錯技巧你知道幾個?

技術領域總是充滿著神祕的未知和挑戰,有趣又令人不能自拔。就像 Java,即使是每天使用它進行開發互動的開發人員,而語言的某些部分仍然未被開發。 瞭解工具可以使工具最大限度的幫助你完成任務。儘管Java的除錯非常麻煩,但在掌握了技巧 (tricks) 的情況下,依然可以用盡量少的的時間解決這些錯誤

精通這 14 個 JavaScript 除錯技巧少走很多彎路!

瞭解你的工具可以在完成任務的過程中發揮重大作用。儘管傳言 JavaScript 難以除錯,但是如果你掌握了一些除錯技巧,那麼你將會花費更少的時間來解決這些錯誤。 我們已經列出了14個你可能不知道的除錯技巧,但可能要記住,這樣下次你需要除錯 JavaScript 程式碼時就可以馬上使用了! 現在

android 除錯技巧

一. 獲取Trace 呼叫棧資訊(Trace)是分析異常經常使用的,這裡簡單劃分兩類情況:     當前執行緒Trace: 當前執行流所線上程的呼叫棧資訊;     目標程序Trace:可獲取目標程序的呼叫棧,用於動態除錯; 1.1 當前執行緒Trace 1) Java層

Matlab幾個繪圖技巧座標軸翻轉

1先繪製個基本圖形: x = -pi/2:0.01:pi;plot(x,sin(x))  2 上面座標軸長了,我只要-pi/2到pi的: set(gca,'XLim',[-pi/2 pi]) 3 上面只坐標軸只顯示整數和.5,我想制定出'-pi/2' '-pi/4:'

Android除錯技巧之模擬記憶體不足

Android開發中經常會遇到記憶體問題,如果測試人員的測試機比較低端的話,常常會遇到下面比較尷尬又無奈的情景:開發人員開發完成了一個功能並自測沒有問題,交給測試,過了一會測試反饋說點選崩潰等一系列問題。尼瑪開發在自己的手機上測試完全沒有問題啊,無法重現測試所說的bug,於是

VS除錯技巧命令視窗

檢視----其它視窗----命令視窗 先啟動除錯,然後輸入Memory 關於更多的命令: 命令名        別名        完整名稱   列印                   ?                  除錯列印  快速監視             ??                

這幾個IDEA高階除錯技巧用完就是香

一個專案啟動兩次 測試分散式專案時,經常要一個專案啟動2次,不用將一個專案開啟多次啟動,配置一下即可 1.點選Edit Configurations 2.勾選Allow parallel run 3.依次點選如下2個按鈕 條件斷點 有如下程式碼,只想讓它在i == 10的情況下停下來 @Tes

仿Android開發者選項點七下顯示除錯介面

private int clickCount = 0; private long clickTime = 0; sevenClickView.setOnClickListener(new View.OnClickListener() { @Override public void

android仿微信、QQ聊天介面實現點選輸入框彈出軟鍵盤、點選其他區域收起軟鍵盤預設滑動至最低端

如圖所示,點選輸入框及選擇圖片和傳送按鈕時軟鍵盤顯示且不消失,點選其他區域,則隱藏軟鍵盤。 主要程式碼如下: override fun dispatchTouchEvent(ev: MotionEvent?): Boolean { if (ev!!.getAction() ==

Android狀態列微技巧沉浸式模式

只需在onCreate方法新增如下程式碼即可: if (Build.VERSION.SDK_INT >= 21) { View decorView = getWindow().getDecorView(); int option = View.SYSTEM_UI_FLAG_

JVMTI 中的JNI系列函式執行緒安全及除錯技巧

JVMTI 中的JNI系列函式,執行緒安全及除錯技巧 jni functions 在使用 JVMTI 的過程中,有一大系列的函式是在 JVMTI 的文件中 沒有提及的,但在實際使用卻是非常有用的。這就是 jni functions.

Android中String資源加空格換行,@

<string name="test">&#160;&#160;&#160;&#160;test</string> &#160; 表示空格 <string name="test">test

android studio 除錯技巧(簡直太好用)

說到android studio的除錯,很多人可能會說,這有什麼可講的不就是一個斷點除錯麼,剛開始我也是這麼認為的,直到我瞭解之後,才發現,除錯原來可以玩的這麼牛。下面我分別一一做介紹。 條件斷點(Conditional Breakpoints) 這個除錯模式是我最喜歡的,簡直不能再方便了,

解決Android Studio kotlin 配置完依賴下載慢下載超時失敗的問題

1.使用Android Studio在第一次匯入專案或者配置完Kotlin後,會一直Build,因為需要下載一些專案中配置的依賴和gradle外掛等,有的需要翻牆,由於國內的網路環境很容易超時。可以使用下面的方法解決的問題: 使用阿里雲的國內映象倉庫地址,就可以快速的下載需要的檔案

android 輸入框 手機號 密碼 郵箱 網路圖片格式 判斷 工具類 封裝簡單實現

我們android 開發人員都會與到 登入註冊,郵箱驗證等問題 ,我們需要if判斷 ,簡單邏輯 比較好些,隨著產品的需求,格式越來越多,邏輯越來越複雜,下面 給大家推薦 一下自己封裝的一個工具類 裡面對應的正的表示式等多個簡單實用 首先是一個工具類   public

C# 除錯技巧 跳過不想除錯的程式碼(執行但不除錯

當你使用F11進行dubug工作時,經常會進入到一些不想進入的property或method內部。比如有下面的程式碼:     public string Word     {         get ;         set ;     } 並且你

Android通知欄微技巧8.0系統中通知欄的適配

大家好,今天我們繼續來學習Android 8.0系統的適配。 之前我們已經講到了,Android 8.0系統最主要需要進行適配的地方有兩處:應用圖示和通知欄。在上一篇文章當中,我們學習了Android 8.0系統應用圖示的適配,還沒有看過這篇文章的朋友可以

Android Studio快捷技巧提高編碼速度

一、在Android Studio中使用其他編譯器的快捷鍵(如Eclipse) 對於有些Eclipse的忠實使用者,可能用不習慣Android Studio的預設快捷鍵,那麼你可以做一些相關設定,使得也能在Android Studio中繼續使用Eclipse或其他編譯器的快

C++ 只要一句輸入重定向。講講程式設計競賽本機除錯技巧

喜歡程式設計的一定希望參加ACM吧。幾乎所有的ACM教材都有講到輸入流的重定向,不過提到只需一句就能重定向的書還真不多。還有重定向的注意事項。好久沒寫C++程式的,為了打打Code Jam的醬油,今天練習了一下。結果就因為這個重定向問題浪費的一天的時間,還以為是演算法寫錯了呢