詳細的用法請看原文:
http://developer.android.com/guide/developing/tools/adb.html
其中有一種用法對於了解較為大型的程式流程非常有用,原文中的例子是:
舉例你有5個.java檔,分別是
A.java
B.java
C.java
D.java
E.java
裡面你可以為每支java都設立各自的tag,如:
TAG_A
TAG_B
TAG_C
TAG_D
TAG_E
在每一個程式的每一個method()都寫上Log.d("TAG_A",method name()); 其中TAG_A依不同程式TAG替換掉,而method_name()則依不同的method name替換掉。而adb logcat改下:
adb logcat TAG_A:D TAG_B:D TAG_C:D TAG_D:D TAG_E:D *:S >> log_file
或是
adb logcat | grep "TAG_"
如此一來,log_file裡面就不會有一大堆有的沒的其它不相關程式的log,而只會單純的顯示A~E.java這五支程式的log。又因為每支程式的method()第一行都有log.d(),所以就會變成光看log_file 就大致了解這個程式的流程了。
了解這種用法並加以變化應用,對學習較複雜的大型程式,非常有用!
另外,為了知道log發生的時間點,可以利用-v Time這個參數,比如:
adb logcat -v Time,則log會類似如下:
01-11 03:21:55.164 D/NotificationService( 237): mIntentReceiver() Intent.ACTION_BATTERY_CHANGED
01-11 03:21:55.164 D/NotificationService( 237): batteryCharging=true, level=100, status=5, health=2
01-11 03:21:55.164 D/PowerUI ( 313): onReceive , action=android.intent.action.BATTERY_CHANGED
http://developer.android.com/guide/developing/tools/adb.html
其中有一種用法對於了解較為大型的程式流程非常有用,原文中的例子是:
adb logcat ActivityManager:I MyApp:D *:S
依個人經驗,在開發程式的時候,建議在每一個method()的第一行都下一個Log.d(),方便日後trace code。而且交接給別人維護時,別人只要執行一下程式順便把log印出來,馬上就能了解程式流程和架構。舉例你有5個.java檔,分別是
A.java
B.java
C.java
D.java
E.java
裡面你可以為每支java都設立各自的tag,如:
TAG_A
TAG_B
TAG_C
TAG_D
TAG_E
在每一個程式的每一個method()都寫上Log.d("TAG_A",method name()); 其中TAG_A依不同程式TAG替換掉,而method_name()則依不同的method name替換掉。而adb logcat改下:
adb logcat TAG_A:D TAG_B:D TAG_C:D TAG_D:D TAG_E:D *:S >> log_file
或是
adb logcat | grep "TAG_"
如此一來,log_file裡面就不會有一大堆有的沒的其它不相關程式的log,而只會單純的顯示A~E.java這五支程式的log。又因為每支程式的method()第一行都有log.d(),所以就會變成光看log_file 就大致了解這個程式的流程了。
了解這種用法並加以變化應用,對學習較複雜的大型程式,非常有用!
另外,為了知道log發生的時間點,可以利用-v Time這個參數,比如:
adb logcat -v Time,則log會類似如下:
01-11 03:21:55.164 D/NotificationService( 237): mIntentReceiver() Intent.ACTION_BATTERY_CHANGED
01-11 03:21:55.164 D/NotificationService( 237): batteryCharging=true, level=100, status=5, health=2
01-11 03:21:55.164 D/PowerUI ( 313): onReceive , action=android.intent.action.BATTERY_CHANGED
沒有留言:
張貼留言