導航:首頁 > 操作系統 > linuxandroid調試工具

linuxandroid調試工具

發布時間:2022-10-10 08:59:36

① 【android】如何使用ADB進行調試

1、adb devices
( 用於查看當前adb連接的設備有哪些,這里目前是無)

(1)linuxandroid調試工具擴展閱讀:

無線使用ADB(Android Debug Bridge)非常的實用,它能夠讓你的手機用無線來取代USB連接,與電腦鏈接起來更加的方便快捷,還可以保護電池。需要root。

還可以進行以下的操作:

1、快速更新設備或手機模擬器中的代碼,如應用或Android系統升級;

2、在設備上運行shell命令

3、管理設備或手機模擬器上的預定埠;

4、在設備或手機模擬器上復制或粘貼文件;

老玩家對adb這個調試工具肯定不陌生了,不過一般都是用USB連接來玩兒,這次帶來的是用無線進行連接,就太強大了,畢竟usb連接對電池的壽命有一定影響。

② 如何使用Android Studio開發/調試Android源碼

一、修改AndroidStudio(以下簡稱AS)的內存配置因為在導入源碼時需要消耗大量內存,所以先修改IDEA_HOME/bin/studio.vmoptions中-Xms和-Xmx的值。文檔中使用的是748m,可自行修改。二、配置AS的JDK、SDK在IDE中添加一個沒有classpath的JDK,這樣可以確保使用源碼里的庫文件三、生成導入AS所需配置文件(*.ipr)①編譯源碼(為了確保生成了.java文件,如R.java;如果編譯過,則無需再次編譯)②檢查out/host/linux-x86/framework/目錄下是否有idegen.jar如果idegen.jar不存在,執行:mmmdevelopment/tools/idegen/在5.0.1的源碼中會生成res.java的文件夾,導致idegen.jar運行時拋FileNotFoundException,這是idegen的代碼不夠嚴謹造成的。我的分享里有修改這個bug的patch,或者直接使用我分享的idegen.jar。③執行development/tools/idegen/idegen.sh等待出現類似下面的結果:Readexcludes:5msTraversedtree:44078ms這時會在源碼的根目錄下生成android.ipr和android.iml兩個IntelliJIDEA(AS是基於IntelliJIDEA社區版開發的)的配置文件④在AS中打開源碼根目錄下新生成的android.ipr四、解決源碼中跳轉錯誤問題①為當前工程設置正確的SDK和JDK②設置'Moles'的依賴先將所有依賴刪掉,只留下上圖'1'所指向的兩個(注意:這里刪除全部只是為了方便。如果確實用到了.jar,在將它們的路徑添加進來就可以了.如:5.0.1的ContactsCommon用到了geocoder-2.9.jar和libphonenumber-6.2.jar)點擊上圖中'2'指向的'+'並選擇上圖'3'指向的'Jarsordirectories'選項,依次將frameworks和external文件夾添加進來五、DEBUG源碼我們可以通過給剛導入的工程在'Moles'中添加'AndroidFramework'來讓AS將它作為一個Android工程,從而方便我們調試代碼.在彈出的選擇進程(ChooseProcess)對話框中,勾選顯示所有進程,選擇要DEBUG的代碼所在的進程,點擊OK即可.六、其它代碼中很多地方提示CallrequiresAPILevelx.出現這個問題是因為AS將我們的工程當做安卓應用程序工程了,且源碼中沒有指定minSdkVersion.我們只需在源碼根目錄加一個聲明minSdkVersion的AndroidManifest.xml文件即可(分享了一個AndroidManifest.xml)。也可以考慮使用build.gradle來解決該問題。

③ 如何調試跟蹤Android Framework源代碼

本文講解如何在Eclipse中導入Android源代碼(包括Framework和Application的代碼),然後通過模擬器或真機跟蹤/調試Android的Java代碼,區別於一般基於Android SDK的純應用開發,這里可以跟蹤/調試Framework中的代碼。

一、准備工作

確保機器上已經安裝並配置下列軟體環境:JDK/ Eclipse / Android SDK / ADT

即,機器上已經安裝了Eclipse下Android應用開發所需的環境。如果還未配置,移步《搭建Windows下Android應用開發環境——Eclipse/Android/ADT》。

另外,為了跟蹤調試Android源碼,你還需要有Android源碼,並有源碼的編譯環境,可以是:

④ 如何使用gdb調試android程序

用gdb調試動態鏈接庫
大家都知道在 Linux 可以用 gdb 來調試應用程序,當然前提是用 gcc 編譯程序時要加上 -g 參數。
我這篇文章里將討論一下用 gdb 來調試動態鏈接庫的問題。
首先,假設我們准備這樣的一個動態鏈接庫:
引用:
庫名稱是: ggg
動態鏈接庫文件名是: libggg.so
頭文件是: get.h
提供這樣兩個函數調用介面:
int get ();
int set (int a);

要生成這樣一個動態鏈接庫,我們首先編寫這樣一個頭文件:
/************關於本文檔********************************************
*filename: get.h
*********************************************************************/
int get ();
int set (int a);
然後准備這樣一個生成動態鏈接庫的源文件:
/************關於本文檔********************************************
*filename: get.cpp
*********************************************************************/
#include
#include "get.h"
static int x=0;
int get ()
{
printf ("get x=%d\n", x);
return x;
}
int set (int a)
{
printf ("set a=%d\n", a);
x = a;
return x;
}
然後我們用 GNU 的 C/C++ 編譯器來生成動態鏈接庫,編譯命令如下:
引用:
g++ get.cpp -shared -g -DDEBUG -o libggg.so
這樣我們就准備好了動態鏈接庫了,下面我們編寫一個應用程序來調用此動態鏈接庫,源代碼如下:
/************關於本文檔********************************************
*filename: pk.cpp
*********************************************************************/
#include
#include "get.h"
int main (int argc, char** argv)
{
int a = 100;
int b = get ();
int c = set (a);
int d = get ();
printf ("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
return 0;
}
編譯此程序用下列命令,如果已經把上面生成的 libggg.so 放到了庫文件搜索路徑指定的文件目錄,比如 /lib 或 /usr/lib 之類的,就用下面這條命令:
引用:
g++ pk.cpp -o app -Wall -g -lggg
否則就用下面這條命令:
引用:
g++ pk.cpp -o app -Wall -g -lggg -L`pwd`
下面我們就開始調試上面命令生成的 app 程序吧。如果已經把上面生成的 libggg.so 放到了庫文件搜索路徑指定的文件目錄,比如 /lib 或 /usr/lib 之類的,調試就順利完成,如下:
引用:
#gdb ./app
GNU gdb 6.4-debian
Copyright 2005 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show ing" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".
(gdb) b main /* 這是在程序的 main 處設置斷點 */
Breakpoint 1 at 0x804853c: file pk.cpp, line 7.
(gdb) b set /* 這是在程序的 set 處設置斷點 */
Function "set" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y /* 這里必須選擇 y 調試程序才會跟蹤到動態鏈接庫內部去 */
Breakpoint 2 (set) pending.
(gdb) run /* 開始運行我們的程序,直到遇見斷點時暫停 */
Starting program: /data/example/c/app
Breakpoint 3 at 0xb7f665f8: file get.cpp, line 11.
Pending breakpoint "set" resolved
Breakpoint 1, main (argc=1, argv=0xbfArrayArray0504) at pk.cpp:7
7 int a = 100;
(gdb) n /* 繼續執行程序的下一行代碼 */
8 int b = get ();
(gdb) n /* 程序執行到了我們斷點所在的動態鏈接庫了 */
get x=0
Array int c = set (a);
(gdb) n
Breakpoint 3, set (a=100) at get.cpp:11
11 printf ("set a=%d\n", a);
(gdb) list /* 查看當前代碼行周圍的代碼,證明我們已經跟蹤到動態鏈接庫的源代碼裡面了 */
6 printf ("get x=%d\n", x);
7 return x;
8 }
Array int set (int a)
10 {
11 printf ("set a=%d\n", a);
12 x = a;
13 return x;
14 }
(gdb) n
set a=100
12 x = a;
(gdb) n
13 return x;
(gdb) n
14 }
(gdb) n
main (argc=1, argv=0xbfArrayArray0504) at pk.cpp:10
10 int d = get ();
(gdb) n
get x=100
11 printf ("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
(gdb) n
a=100,b=0,c=100,d=100
12 return 0;
(gdb) c
Continuing.
Program exited normally.
(gdb) quit /* 程序順利執行結束 */
如果我們沒有把動態鏈接庫放到指定目錄,比如/lib裡面,調試就會失敗,過程如下:
引用:
# gdb ./app
GNU gdb 6.4-debian
Copyright 2005 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show ing" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".
(gdb) b main
Breakpoint 1 at 0x804853c: file pk.cpp, line 7.
(gdb) b set
Function "set" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 2 (set) pending.
(gdb) run /* 雖然調試操作都一樣,但程序執行失敗 */
Starting program: /data/example/c/app
/data/example/c/app: error while loading shared libraries: libggg.so: cannot open shared object file: No such file or directory
Program exited with code 0177.
(gdb) quit

⑤ 如何使用Android Studio開發/調試Android自帶系統應用

開發調試環境: Ubuntu 14.10,openJdk 1.7,Android Studio 1.0.2,android-5.0.1_r1源碼
由於AS是基於IntelliJ IDEA開發的,所以本文也適用於IntelliJ IDEA
一、修改Android Studio(以下簡稱AS)的內存配置

因為在導入源碼時需要消耗大量內存,所以先修改IDEA_HOME/bin/studio64.vmoptions(x86的機器修改studio.vmoptions)中-Xms和-Xmx的值。文檔中使用的是748m, 可自行修改。
二、配置AS的JDK、SDK
在IDE中添加一個沒有classpath的JDK, 這樣可以確保使用源碼里的庫文件

並將其作為要使用的SDK的Java SDK。如下圖

三、生成導入AS所需配置文件(*.ipr)
①編譯源碼(為了確保生成了.java文件,如R.java;如果編譯過,則無需再次編譯)
②檢查out/host/linux-x86/framework/目錄下是否有idegen.jar
如果idegen.jar不存在,執行:
mmm development/tools/idegen/

在5.0.1的源碼中會生成res.java的文件夾,導致idegen.jar運行時拋FileNotFoundException,這是idegen的代碼不夠嚴謹造成的。
我的分享里有修改這個bug的patch,或者直接使用我分享的idegen.jar。
③執行
development/tools/idegen/idegen.sh

等待出現類似下面的結果:
Read excludes: 5ms
Traversed tree: 44078ms

這時會在源碼的根目錄下生成android.ipr和android.iml兩個IntelliJ IDEA(AS是基於IntelliJ IDEA社區版開發的)的配置文件
Tips:
AS在導入代碼時比較慢,建議先修改android.iml,將自己用不到的代碼exclude出去.可以仿照過濾.repo文件夾的語法,如:
<excludeFolder url="file://$MODULE_DIR$/.repo" />
<excludeFolder url="file://$MODULE_DIR$/abi" />
<excludeFolder url="file://$MODULE_DIR$/art" />
這樣在導入時就會跳過abi和art文件夾.過濾的越多,AS的處理速度就會越快.
④在AS中打開源碼根目錄下新生成的android.ipr

如果在導入時AS出現

則建議按照其給定的解決方法來解決(網址:http://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit),具體內容如下圖:

四、解決源碼中跳轉錯誤問題
①為當前工程設置正確的SDK和JDK

②設置'Moles'的依賴

先將所有依賴刪掉,只留下上圖'1'所指向的兩個(注意:這里刪除全部只是為了方便。如果確實用到了.jar,在將它們的路徑添加進來就可以了.
如:5.0.1的ContactsCommon用到了geocoder-2.9.jar和libphonenumber-6.2.jar)
點擊上圖中'2'指向的'+'並選擇上圖'3'指向的'Jars or directories'選項,依次將frameworks和external文件夾添加進來.如:

其它版本的代碼在添加frameworks時可能會顯示成:

沒有關系,只是顯示問題,點擊OK還是會把frameworks路徑添加進去的.
如果還有代碼跳轉錯誤,請仿照上面的步驟將相應代碼的路徑或jar文件添加到其Dependencies標簽頁中即可.
五、DEBUG源碼
我們可以通過給剛導入的工程在'Moles'中添加'Android Framework'來讓AS將它作為一個Android工程,從而方便我們調試代碼.

可以按照上圖中'1'和'2'來添加Android Framework支持.

在代碼中加斷點,然後選擇'Run'->'Attach debugger to Android process'或者直接點擊下圖所示的圖標
在彈出的選擇進程(Choose Process)對話框中,勾選顯示所有進程,選擇要DEBUG的代碼所在的進程,點擊OK即可.
六、其它
代碼中很多地方提示Call requires API Level x.... 出現這個問題是因為AS將我們的工程當做安卓應用程序工程了,且源碼中沒有指定minSdkVersion.
我們只需在源碼根目錄加一個聲明minSdkVersion的AndroidManifest.xml文件即可(分享了一個AndroidManifest.xml)。
也可以考慮使用build.gradle來解決該問題。

⑥ android adb是什麼意思

adb的全名是Android調試橋,它充當調試橋。Adb是Android SDK中的工具,使用此工具,您可以直接操作和管理Android模擬器或真實的Android設備(例如G1手機)。

Android系統的adb的全名是Android Debug Bridge,在Android開發環境中,abd是我們經常用於開發的調試工具,使用adb工具的前提是打開手機上的USB調試,然後通過數據線連接到計算機。

通過adb,我們可以通過Eclipse中的DDMS(調試工具)輕松調試Android程序。,Adb以一種特殊的方式工作,它監視Socket TCP 5554和其他埠,以允許IDE和Qemu進行通信,默認情況下,adb將守護程序相關的網路埠,因此,當我們運行Eclipse時,adb進程將自動運行。

(6)linuxandroid調試工具擴展閱讀:

android adb主要功能有:

1、運行設備的shell(命令行);

2、管理模擬器或設備的埠映射;

3、計算機和設備之間上傳/下載文件;

4、 將本地apk軟體安裝到模擬器或android設備。

參考資料:網路—ADB

⑦ 如何在android studio中調試源程序

一、修改Android Studio(以下簡稱AS)的內存配置

因為在導入源碼時需要消耗大量內存,所以先修改IDEA_HOME/bin/studio64.vmoptions(x86的機器修改studio.vmoptions)中-Xms和-Xmx的值。文檔中使用的是748m, 可自行修改。

二、配置AS的JDK、SDK

在IDE中添加一個沒有classpath的JDK, 這樣可以確保使用源碼里的庫文件

三、生成導入AS所需配置文件(*.ipr)

①編譯源碼(為了確保生成了.java文件,如R.java;如果編譯過,則無需再次編譯)

②檢查out/host/linux-x86/framework/目錄下是否有idegen.jar

如果idegen.jar不存在,執行:
mmm development/tools/idegen/

在5.0.1的源碼中會生成res.java的文件夾,導致idegen.jar運行時拋FileNotFoundException,這是idegen的代碼不夠嚴謹造成的。

我的分享里有修改這個bug的patch,或者直接使用我分享的idegen.jar。

③執行
development/tools/idegen/idegen.sh

等待出現類似下面的結果:
Read excludes: 5ms
Traversed tree: 44078ms

這時會在源碼的根目錄下生成android.ipr和android.iml兩個IntelliJ IDEA(AS是基於IntelliJ
IDEA社區版開發的)的配置文件

Tips:

AS在導入代碼時比較慢,建議先修改android.iml,將自己用不到的代碼exclude出去.可以仿照過濾.repo文件夾的語法,如:

<excludeFolder url="file://$MODULE_DIR$/.repo" />
<excludeFolder
url="file://$MODULE_DIR$/abi" />
<excludeFolder
url="file://$MODULE_DIR$/art" />

這樣在導入時就會跳過abi和art文件夾.過濾的越多,AS的處理速度就會越快.

④在AS中打開源碼根目錄下新生成的android.ipr

如果在導入時AS出現

則建議按照其給定的解決方法來解決

四、解決源碼中跳轉錯誤問題

①為當前工程設置正確的SDK和JDK

②設置'Moles'的依賴

先將所有依賴刪掉,只留下上圖'1'所指向的兩個(注意:這里刪除全部只是為了方便。如果確實用到了.jar,在將它們的路徑添加進來就可以了.

如:5.0.1的ContactsCommon用到了geocoder-2.9.jar和libphonenumber-6.2.jar)

點擊上圖中'2'指向的'+'並選擇上圖'3'指向的'Jars or
directories'選項,依次將frameworks和external文件夾添加進來.如:

其它版本的代碼在添加frameworks時可能會顯示成:

⑧ 如何使用Android中的DDMS進行調試,開發文檔,站長資訊

安卓附帶了一個叫Dalvik調試跟蹤服務(DDMS)的調試工具它提供埠轉發服務,屏幕截屏,線程和堆棧信息,日誌,進程,電話狀態信息,模擬來電和簡訊,模擬本地數據,等等。本頁提供DDMS最新的功能概述;但不是所有功能和要點的詳盡介紹。

運行DDMS
DDMS集成在Eclipse中,同時也附帶在SDK下的tools目錄下。DDMS既可以在模擬器中工作也可以在已連接的設備上工作。如果同時連接了設備和運行了模擬器,DDMS默認在模擬器中運行。

從Eclipse打開:點擊* Window > Open Perspective > Other... > DDMS* 。

從命令行打開:在tools目錄下輸入ddms(或./ddms在Mac/Linux)

DDMS怎樣與調試器交互
在安卓平台上,每個應用都運行在自己的進程上,同時每個應用也都運行在自己的虛擬機(VM)上。每個VM公布了唯一的埠號以供調試器連接。

當DDMS啟動後,會連接到adb。當有設備連接上,VM監測服務就在adb和DDMS之間創建,它會通知DDMS 設備上的VM是啟動了還是終止了。一旦VM是運行的,DDMS就獲取VM的進程ID(pid),通過adb和設備上的adb守護進程(adbd)建立到VM調試器的連接。到此,DDMS就可以使用約定的線協議與VM通信。

DDMS給設備上的每個VM分配一個調試埠。通常,DDMS分配的第一個可調試埠號是8600,下一個是8601,依次往下類推。當調試器連接到已分配的一個埠時,VM上的所有通信都會被關聯到調試器。一個調試器只能連接一個單獨的埠,但是DDMS同時可以處理多個連接的調試器。

默認的,DDMS也會監聽DDMS的「基本埠」(默認為8700)。基本埠是一個埠轉發埠,可以通過8700埠接受來自VM所有調試埠的通信並可以發送信息到調試器。這就允許你將調試器連接到8700埠,然後可以調試所有設備上的虛擬機。在DDMS設備視圖下,轉發的通信可以被當前所選進程終止。

接下來的屏幕截圖會在Eclipse中顯示標準的DDMS屏幕視圖。如果你是從命令行啟動的DDMS,截圖會略有不同,但絕大部分功能是相同的。注意這個特殊進程,com.android.email它在模擬器上運行時的調試埠是8700,而分配給它的埠是8606。這就表明DDMS當前將8606埠轉發到靜態調試埠8700。

http://docs.eoeandroid.com/images/debug-ddms.png圖1.DDMS截圖

如果你不用Eclipse和ADT,請閱讀 Configuring your IDE to attach to the debugging port來獲取更多連接到調試器的信息。

提示:你可以在File > Preferences中設置一系列的個人使用配置。配置保存在$HOME/.android/ddms

了解Dalvik的調試問題*
在Dalvik虛擬機中調試的應用和在其他虛擬機中的應用一樣運行。然而,當單步跳出同步代碼時,「當前位置」指針可能一下跳到方法中的最後位置

使用DDMS
下一部分講述怎麼使用DDMS和DDMS圖形用戶界面中的各個選項和面板。Eclipse版本和命令行版本界面有較小的不同,但是功能上是相同的。要獲得運行中的DDMS的信息,參見前一部分的文檔,Running DDMS.

查看進程的堆使用情況
DDMS允許查看進程堆內存的使用情況。在程序的特定執行時間跟蹤堆使用情況是非常有用的信息。

查看堆使用的步驟:

1.在設備選項,選擇要查看堆使用信息的進程。2.點擊 Update Heap 按鈕獲取進程的堆信息。3.在堆選項中,點擊Cause GC來激活垃圾收集,它會讓堆數據收集變得可用。當操作完成,會看到一組對象類型和每種類型已分配的內存。再次點擊Cause GC就可以刷新數據。4.點擊一個對象類型列表中看到一個條形圖顯示對象的數量分配給一個特定的內存位元組大小。

跟蹤對象的內存分配
DDMS提供一個很有用的功能,它跟蹤正在分配內存的對象和查看那些類和線程正分配對象。這樣,在應用中執行特定操作時你就可以實時跟蹤哪些對象正在被分配資源。分析影響到應用性能的內存使用是很有價值的信息。

跟蹤內存的對象分配:

1.在設備選項,選擇需要跟蹤內存分配的進程。2.在分配內存選項,點擊Start Tracking按鈕開始分配跟蹤。這時,任何在應用中的操作都會被跟蹤。3.點擊Get Allocations來查看從點擊Start Tracking按鈕以來已經分配了的對象列表。再點擊Get Allocations就會將已分配的新對象添加到列表中。4.如果要停止跟蹤或清除數據後重新開始,點擊Stop Tracking按鈕。5.點擊列表中的特定行就可以看到更詳細的信息,比如已分配的對象的方法和代碼行號。

使用模擬器或設備的文件系統
DDMS提供了文件系統選項,它允許查看、復制和刪除設備上的文件。這個功能對於檢查應用創建的文件或向設備中導入文件和從設備導出文件來說,非常有用。

使用模擬器或設備文件系統:

1.在設備選項,選擇要查看文件系統的模擬器。2.要從設備中復制文件,先在文件瀏覽中定位文件,然後點擊Pull file按鈕。3.要把文件復制到設備中,點擊文件瀏覽選項中的Push file按鈕

查看線程信息
DDMS中的線程選項顯示了所選進程中正在運行的線程信息。

1.在設備選項,選擇要查看的線程所在的進程。2.點擊Update Threads按鈕。3.在線程選項就可以看到所選進程的線程信息了

開始方法分析
方法分析是一種對方法的某些數據進行跟蹤的手段,例如:調用次數、執行時間和執行方法所用時間。如果想更精確的控制在那些地方收集分析數據,使用startMethodTracing()和stopMethodTracing()方法。要獲得更多關於產生跟蹤日誌的信息,請查看Profiling and Debugging UIs.

在DDMS中開始方法分析之前,注意以下限制情況:

安卓1.5版本的設備不支持
安卓2.1和更早的版本必須已插入SD卡,並且應用有寫SD卡的許可權
安卓2.2和以後的設備不需要已插入SD卡。跟蹤日誌文件直接輸出到開發設備上。
開始方法分析:

1.在設備選項,選擇要進行方法分析的進程2.點擊Start Method Profiling按鈕。3.與應用進行交互,開始要分析的方法4.點擊 Stop Method Profiling按鈕。DDMS停止分析應用並打開Traceview,它包含了在點擊Start Method Profiling和Stop Method Profiling之間方法分析收集到的信息.

使用網路通信工具
在安卓4.0中,DDMS(Dalvik調試監控服務)包含了詳細的網路使用選項,可以跟蹤應用的網路請求。使用這個工具,可以監測應用何時以及如何傳輸數據,並且能根據這個適當的優化底層代碼。在使用前,也可以通過添加標簽到網路套介面來區分不同的通信類型。

在DDMS中,這些標簽代表的堆棧信息以圖表形式顯示,如圖2:

http://docs.eoeandroid.com/images/developing/ddms-network.png

圖2.網路使用表

監測每次連接數據傳輸的頻率和傳輸的數據量,可以確定應用的那些地方可以優化以至於可以更省電。通常,應該找可以延遲的短的峰值或者會導致傳輸延遲,提前清空它們。

為了更好的確認導致傳輸峰值的原因,TrafficStats API 允許使用 setThreadStatsTag()方法在線程中標識數據傳輸,接著用tagSocket()和untagSocket()可以手動標識(或去標識)不同的套介面。例如:

TrafficStats.setThreadStatsTag(0xF00D);TrafficStats.tagSocket(outputSocket);// Transfer data using socketTrafficStats.untagSocket(outputSocket);

或者,平台中的Apache HttpClient 和URLConnection 的API在活動的標識(被getThreadStatsTag()確定過的標識)上會自動標識內部套介面。當通過活動池回收時,這些API會正確的標識/去標識套介面。

TrafficStats.setThreadStatsTag(0xF00D); try { // Make network request using HttpClient.execute() } finally { TrafficStats.clearThreadStatsTag();}

在安卓4.0上支持套介面標識,但顯示套介面標識的實時狀態只在安卓4.0.3或更高版本的設備上才支持。

使用日誌
LogCat集成在DDMS中,可以輸出使用 Log 類列印的消息和其它系統的消息,例如異常拋出時的堆棧跟蹤消息。參閱Reading and Writing Log Messages 獲得更多關於將消息記錄到LogCat的信息。

當設置完日誌後,使用下列按鈕就可以用LogCat來過濾特定消息:

Verbose
Debug
Info
Warn
Error
也可以通過自定義設置的過濾器來獲得更詳細的信息,例如可以用日誌標簽或進程ID來生成日誌信息。使用過濾器的增、刪和改按鈕來管理自定義的過濾器。

模擬電話操作和位置
模擬器控制選項可以模擬手機的語音和數據網路狀態。如果你想在不同網路環境下測試應用的健壯性,這會很有用。

改變網路狀態、網速和網路延遲
模擬器控制選項卡的電話狀態部分可以改變手機的網路狀態、網速和網路延遲。下列選項可供使用並且設置後立即有效:

Voice - unregistered home roaming searching denied
Data - unregistered home roaming searching denied
Speed - Full GSM HSCSD GPRS EDGE UMTS HSDPA
Latency - GPRS EDGE UMTS
模擬來電或簡訊
模擬器控制選項卡的電話部分可以模擬電話和簡訊。這對測試應用在回應來電和簡訊方面的健壯性很有用。有如下操作:

Voice - 在 Incoming number 框輸入號碼,點擊Call就給模擬器或電話設備撥打電話。點擊Hang up按鈕就掛掉電話。
SMS - 在 Incoming number 框輸入號碼在Message 輸入簡訊內容,點擊Send按鈕發送簡訊。
設置電話位置
如果應用需要使用電話位置,使用DDMS可以給電話設備或AVD(安卓虛擬設備)設置模擬位置。如果想測試應用不同方面的跟位置有關的特性又不必實際改變物理位置,這會很有用。下面是可用的定位數據類型:

Manual - 通過手動指定的十進制或六十進制的經度和緯度值來設置位置
GPX - GPS 交互文件
KML - Keyhole 標記語言文件
要獲得更詳細的模擬位置數據的信息,請查看Location Strategies

⑨ 如何將android linux燒到Raspberry Pi及其調試

一.Raspberry Pi入門向導。

可以在以下地址下載Raspberry向導


2.構建android framework

命令如下:

cd <your_android_path>

source build/envsetup.sh

lunch


顯示lunch菜單如下:

You』re building on Linux


Lunch menu… pick a combo:

1. full-eng

2. full_x86-eng

3. simulator

4. full_rpi-eng

5. cyanogen_generic-eng

6. cyanogen_rpi-eng

選擇第6個菜單。

然後進行編譯

make -j8

等待編譯成功,這可能需要幾十分鍾。


編譯成功之後將」system」目錄復制到root目錄下,接下來我們可能會用到。

命令如下:

cd <your_android_path>

cp -r system out/target/proct/rpi/root


ps:編譯時如果jdk版本不對,可將其改成jdk1.6


五.如何在Raspberry Pi上跑android linux內核?


1.准備一張存儲空間2G以上的SD卡及相應讀卡器。


2.下載arch linux鏡像文件

用wget工具下載鏡像文件:

wget http://files.velocix.com/c1410/images/archlinuxarm/archlinux-hf-2012-09-18/archlinux-hf-2012-09-18.zip

解壓

unzip archlinux-hf-2012-09-18.zip

成功之後,你會在當前目錄下發現一個鏡像文件。


3.燒linux鏡像文件。

sudo dd bs=4M if=archlinux-hf-2012-09-18.img of=/dev/sdb

sudo sync

ps:/dev/sdb是SD卡在主機上的設備文件。不同的電腦可能不同。


4.用android linux內核代替這個內核。

做完上述步驟之後,當你把SD卡插在電腦上,你會發現有兩個分區:一個是引導區,另一個是文件系統區。

用android linux內核代替引導區的kernel.img。

cp -uv <your_android_linux_path>/arch/arm/boot/zImage <your_sdcard_boot_partition>/kernel.img


5.用android linux文件系統代替這個linux文件系統

rm -rf <your_sdcard_file_system_partition>

cp -r <your_android_source_code_path>/out/target/proct/rpi/root/* <your_sdcard_file_system_partition>


6.配置內核命令行cmdline.txt

Edit the <your_sdcard_boot_partition>/cmdling.txt, and replace 「init=/…」 with 「init=/init」


7.做完這些之後就可以在Raspberry Pi上跑這個android linux內核。


六.如何為Android linux做一張可引導的SD卡


1.刪除已有分區,如果沒有就不用刪了。

Command(m for help):p


Disk /dev/sdb: 15.7 GB, 15707668480 bytes

64 heads, 32 sectors/track, 14980 cylinders, total 30668085 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0×00000000


sudo fdisk/dev/sdb


Command(m for help):d

Partition number(1-4):1


Command(m for help):d

Selected partition 2


Command (m for help): p


Disk /dev/sdb: 15.7 GB, 15707668480 bytes

64 heads, 32 sectors/track, 14980 cylinders, total 30679040 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0×00000000

Device Boot Start End Blocks Id System


Command(m for help):w

ps:確定刪除之後,卸掉SD卡,然後再裝上。


以bytes問單位記下SD卡的大小。後面的步驟會用到。

然後進入」Expert mode」。


Command(m for help):x


將這個SD卡設置為255個磁面,63個扇區和磁柱數量(不同的SD/mmc卡有著不同的此柱數量)

Expert command (m for help): h

Number of heads (1-256, default 64): 255


Expert command (m for help): s

Number of sectors (1-63, default 32): 63


ps:在下一步開始前,先要計算磁柱數量,計算過程如下:

B:SD卡以bytes為單位的大小(前面已經記住了即:15707668480)

C:磁柱的數量

C=B/255/63/512


例如:我的SD卡大小是16G(15707668480)

C=15707668480/255/63/512=1909.68191721,約等於1909.


Expert command (m for help): c

Number of cylinders (1-1048576, default 14980): 1909

Expert command (m for help): r


2.新建分區

如果你的SD卡已經分區,請按照上述步驟刪除分區。接下來,我們將創建兩個分區,一個是引導區,用來存放內核鏡像等文件;另一個文件系統區存放android linux文件系統。


Command (m for help): n

Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p): p

Partition number (1-4, default 1):

Using default value 1

First sector (2048-30679039, default 2048):

Using default value 2048

Last sector, +sectors or +size{K,M,G} (2048-30679039, default 30679039): +128M

Command (m for help): t

Selected partition 1

Hex code (type L to list codes): c

Changed system type of partition 1 to c (W95 FAT32 (LBA))

Command (m for help): a

Partition number (1-4): 1

Command (m for help): n

Partition type:

p primary (1 primary, 0 extended, 3 free)

e extended

Select (default p): p

Partition number (1-4, default 2):

Using default value 2

First sector (264192-30679039, default 264192):

Using default value 264192

Last sector, +sectors or +size{K,M,G} (264192-30679039, default 30679039):

Using default value 30679039

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x

partitions, please see the fdisk manual page for additional

information.

Syncing disks.


ok,分區成功,現在我們有兩個分區,接下我們對分區進行格式化。


3.格式化分區

對引導區進行格式化:


sudo mkfs.msdos -F 32 /dev/sdb1 -n BOOT

mkfs.msdos 3.0.12 (29 Oct 2011)


對文件系統區進行格式化:

sudo mkfs.ext3 /dev/sdb2 -L ROOTFS

mke2fs 1.42 (29-Nov-2011)

Filesystem label=ROOTFS

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

950976 inodes, 3801856 blocks

190092 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=3896508416

117 block groups

32768 blocks per group, 32768 fragments per group

8128 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Allocating group tables: done

Writing inode tables: done

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done


4.設置引導區

引導區必須包含以下文件,你可以從官方鏡像里獲取(bootable/fat32 partition)也可以從書面步驟中復制過來:

bootcode.bin:第二階段的引導程序,

loader.bin:第三階段的引導程序,

start.elf:GPU二進制固件映像,

kernel.img操作系統的內核鏡像文件,

cmdline.txt:傳遞給內核的參數.


5.設置root文件系統分區

ROOTFS分區包含android文件系統,是從<your_android_framework_path>/out/target/proct/rpi/root復制過來的。

cp -r <your_android_framework_path>/out/target/proct/rpi/root/* /media/ROOTFS/


6.完成上述步驟之後,將其放在Raspberry Pi上跑。


七.如何在Raspberry Pi使用adb?


1.查看網路

當android linux在Raspberry Pi運行時,切換到控制台,執行以下命令:

ifconfig eth0

記下ip地址。

如果不能找到ip,可以輸入以下命令:/system/xbin/dhcp-eth0,來啟動網路連接程序。

ps:如果屏幕沒有顯示控制台,只要按CTRL+ALT+F2即可切換到控制台。如果你想要切換到Android界面,只要按CTRL+ALT+F7即可。


2.遠程連接adb伺服器

在主機上執行以下命令即可與同一區域網的Raspberry Pi相連

adb connect ip

連接成功後,你就可以用adb工具輸出日誌,執行shell命令等。


3.也可以用數據線連接主機,直接在主機上調試。

進入調試的命令為:

screen /dev/ttyUSB0 115200


名詞解釋:

交叉編譯(cross compile):交叉編譯呢,簡單地說,就是在一個平台上生成另一個平台上的可執行代碼。這里需要注意的是所謂 平台,實際上包含兩個概念:體系結構(Architecture)、操作系統(Operating System)。同一個體系結構可以運行不同的操作系統;同樣,同一個操作系統也可以在不同的體系結構上運行。舉例來說,我們常說的x86 Linux平台實際上是Intel x86體系結構和Linux for x86操作系統的統稱;而x86 WinNT平台實際上是Intel x86體系結構和Windows NT for x86操作系統的簡稱。

⑩ android開發如何調試

能夠在eclipse上運行調試應用程序之前,你必須為它創建一個啟動項。啟動項指定哪個工程將被啟動,哪個activity開始工作,以及使用哪些模擬器選項等。
按照以下步驟為Eclipse版本的應用程序創建合適的啟動項:
打開啟動項管理工具。
在Eclipse 3.3 (Europa)的版本中,酌情選擇 Run > Open RunDialog... or Run > Open Debug Dialog... 。
在Eclipse3.4 (Ganymede)版本中,酌情選擇 Run > Run Configurations...or Run > Debug Configurations... 。
在左邊的工程類型列表選擇Android Application選擇,雙擊(或者點擊右鍵選擇new),創建一個新的啟動項。
輸入啟動項名稱。
在Android標簽中,瀏覽要開始的工程和Activity 。
在Target標簽中,設置想要顯示的屏幕及網路屬性,以及其他任何模擬器啟動選項。
你可以在Common標簽中設置更多的選項.
按下Apply保存啟動配置,或者按下Run或Debug()。
運行和調試應用程序
一旦你設定了工程和工程啟動配置,你就可以按照以下的說明運行和調試應用程序了。
從eclipse主菜單,根據情況選擇Run>Run 或者 Run>Debug,開始運行或者調試活動啟動項。
注意,這里活動啟動項是在運行配置管理中最最近一次選中的那個。它不一定就是在Eclipse Navigation 面板中選擇的程序(如果有的話)
設置和修改活動啟動項,可以使用啟動項管理工具。如何獲得啟動項管理工具可以參考創建一個啟動項
運行或調試應用程序將觸發以下動作:
啟動模擬器,如果他還沒有開始運行。
編譯工程, 如果在上次編譯的基礎上修改過代碼,將重新編譯。在模擬器上安裝應用程序。
Run選項,開始運行程序。
Debug 在"Wait for debugger "模式下啟動程序,然後打開調試窗口並將Eclipse Java調試器和程序關聯。
利用其他IDEs和工具開發Android應用程序
通常我們使用安裝有ADT插件的eclipse Eclipse with the ADT plugin.來開發Android程序,這個插件將編輯,build和調試功能集成到IDE上。
然而,如果你想在其他的IDE上開發程序,例如IntelliJ,或者使用沒有ADT插件的eclipse也可以。SDK提供了安裝,編譯,調試應用程序所需要的工具。
創建一個android工程
Android SDK包含一個activityCreator的程序,它將為工程產生多個stub文件和一個build文件。你可以用這個程序創建一個新的 Android工程或者在現有代碼上創建工程,如SDK中包含的例子。對於Linux 和Mac系統,SDK提供activityCreator.py,一個 Python腳本,Windows上則是activityCreator.bat一個批處理腳本。無論是哪種平台,用法是一樣的。
按以下步驟運行activityCreator創建Android工程:
在命令行下,切換到SDK下的tools/目錄下,為你的工程文件新建一個目錄。如果你是在現有代碼上創建工程,切換到程序的根目錄下。
運行activityCreator。在命令行下,你必須指定完全合格的類名作為參數。如果你是創建一個全新的工程,這個類代表的與它同名的stub類和腳本文件。如果是在現有代碼上創建工程,必須指定軟體包中其中一個Activity類的名稱。命令選項的腳本包括:
--out <folder> 設定輸出目錄。默認情況下輸出目錄為當前目錄。如果你想為工程文件創建一個新的目錄,可以使用這個選項來指向它。
--ide intellij, 在一個新的項目中生成IntelliJIDEA 工程文件。
這里有個例子:
~/android_linux_sdk/tools $ ./activityCreator.py --out myprojectyour.package.name.ActivityName
package: your.package.name
out_dir: myproject
activity_name: ActivityName
~/android_linux_sdk/tools $
activityCreator腳本生成以下文件和目錄(但是不能重寫已有文件):
AndroidManifest.xml 程序的清單文件,同時為工程指定Activity類。
build.xml 一個Ant文件,用來編譯/打包應用程序。
src/your/package/name/ActivityName.java 你指定的輸入Activity類。
your_activity.iml, your_activity.ipr, your_activity.iws [only with the-ide intelliJ flag] intelliJ工程文件
res/ 資源目錄.
src/ 源代碼目錄.
bin/ build腳本的輸出目錄.
現在你可以將開發文件夾移到任何地方,但是記住,必須使用tool/文件夾下的adb程序將文件發送到模擬器上。因此你需要在你工作環境和tools/文件夾之間活動。
當然你需要避免移動SDK目錄,因為它將打斷編譯腳本。(再重新build之前需要手動更新SDK的映射路徑)
編譯 android應用程序
使用activityCreator生成的Ant文件build.xml來編譯程序
如果你沒有,你可以通過Apache Ant home page得到Ant文件。安裝它,並確定它在你的可執行文件路徑下。
呼叫Ant之前,你需聲明JAVA_HOME環境變數,並將它設置為JDK的安裝路徑。
注 意:在windows上,JDK默認的安裝路徑為"ProgramFiles",這個路徑將會引起Ant失敗,因為路徑中間有空格。解決這個問題,你可以像這樣指定環境變數 JAVA_HOME:JAVA_HOME=c:\Prora~1\Java\ 然而簡單的解決方法是將JDK安裝在沒有空格的目錄下。例如:c:\java\jdk1.6.0_02.
如果你還沒有這么准備好,按照上面創建一個新的工程的介紹建立一個工程。
現在你可以為你的工程運行Ant編譯文件,只需在build.xml同文件夾下輸入ant即可。每次修改原文件或是資源,都需要重新運行ant,它將把最新版的應用程序打包以便deploy.
運行Android程序
運行一個編譯好的程序,你需要用adb工具將.apk文件載入到模擬器的/data/app/目錄下,用法如下面介紹。
啟動模擬器(命令行下運行sdk目錄下的/tools/emulator)。
模擬器切換到主畫面(最好不要在程序運行的時候向模擬器安裝程序,可以按home鍵離開應用程序)。
運 行adb,安裝myproject/bin./<appname>.apk文件。例如,安裝Lunar Lander 示例,命令行下,切換到SDK目錄下的/sample/LunarLander子目錄下,輸入../../tools/adbinstall bin/LunarLander.apk
在模擬器中,打開可執行程序列表,卷動屏幕,選中並啟動你的應用程序。
注意:當你第一次安裝一個Activity時,你可能需要在啟動項顯示之前,或者其它程序調用它之前重新啟動模擬器。因為軟體包管理工具通常只有在模擬器啟動時才能完全的審查manifests。
為程序附加調試器
這一節我們介紹如何在屏幕上顯示調試信息(例如CPU使用率),以及如何將IDE和模擬器上運行的程序關聯起來。
使用eclipse插件可以自動的生成調試器。但你也可以通過配置IDES來監聽調試埠得到調試信息。
啟動Dalvik Debug Monitor Server (DDMS) 工具 ,它在IDE和模擬器之間扮演著埠轉換服務的角色。?
設置模擬器調試配置選項。例如,等到調試信息被載入後才啟動應用程序。注意,很多調試選項無需DDMS也可以使用,例如模擬器上顯示CPU的使用效率,或者屏幕的刷新頻率。
配置IDE,使得調試時IDE與8700埠關聯 .how to set up Eclipse to debug your project. 包含以下信息。
配置IDE附加調試埠
DDMS將為每一個虛擬機分配一個特殊的調試埠,這個埠在模擬器上可以找到。你必須將你的IDE與此埠(虛擬機上信息欄中有列出這些埠)關聯或者是默認的埠8700。這樣可以使IDE 連接到模擬器上程序列表中的任一個程序。
你的IDE需要能夠關聯模擬器上正在運行的程序,顯示它的線程,並允許你掛起它,檢查它的狀態,設置斷點。如果你在開發設置面板選擇了「等待調試」,應用程序將等到Eclipse連接後才運行,所以你需要在連接之前設置斷點。
修改正在調試的程序,或者在當前程序運行時選擇「等待調試」將引起系統殺死這個應用程序。如果你的程序處於一種壞的狀態,你可以使用方式殺死它,方法很簡單,只需要設置和鉤掉復選框。

閱讀全文

與linuxandroid調試工具相關的資料

熱點內容
一年級下冊摘蘋果的演算法是怎樣的 瀏覽:446
程序員出軌電視劇 瀏覽:88
伺服器系統地址怎麼查 瀏覽:54
解壓游戲發行官 瀏覽:601
國外小伙解壓實驗 瀏覽:336
頂級大學開設加密貨幣 瀏覽:437
java重載與多態 瀏覽:528
騰訊應屆程序員 瀏覽:942
一鍵編譯程序 瀏覽:129
語音加密包哪個好 瀏覽:339
有什麼學習高中語文的app 瀏覽:282
安卓手機的表格里怎麼打勾 瀏覽:409
阿里雲伺服器有網路安全服務嗎 瀏覽:968
超解壓兔子視頻 瀏覽:24
單片機怎麼測負脈沖 瀏覽:174
魅族備份的app在哪裡 瀏覽:740
java倒三角列印 瀏覽:115
通達信回封板主圖源碼 瀏覽:46
戰地什麼伺服器 瀏覽:301
安卓為什麼老是閃退怎麼辦 瀏覽:805