文章分類

2012年3月24日 星期六

在Android C/C++層使用LOG來Debug

最近在trace Android External中的Webkit原始碼,遇到一個卡了我好幾天的問題。

一開始想說都是C/C++檔案,於是乎,就挑了Camera中HAL層的C/C++檔案,用

同樣方法來Debug

1)#include<utils/Log.h>

2)LOGD(“XXX”);

或者

1)#define LOG_TAG “your TAG”

2)#include<cutils/log.h>

這兩個方法在我的環境上沒有效。

結果我認為會跑到的函數,自己的LOG都沒有印出來,make也沒有任何錯誤。

最後用obj dump才知道,應該是有跑到,但是LOG沒有印。所以我猜測,

上述這兩個方法在我的環境上沒有效。於是又繼續Google,

找看看有沒有其它的解法,結果終於找到了,解法如下:

1)在對應的Android.mk文件中加入LOCAL_LDLIBS:= –llog

2)在C/C++文件中加入

#include<android/log.h>

#define LOGD(…)__android_log_print(ANDROID_LOG_DEBUG, “Vick”, __VA_ARGS__)

3)LOGD(“ My log information is here”);

這樣我們在Logcat端看到的就是:

Type PID TAG Message
D xx Vick My log information is here

聰明的讀者一定知道,綠色的部份當然可以換成Logcat中我們熟悉的:

VERBOSE ANDROID_LOG_VERBOSE
INFO ANDROID_LOG_INFO
WARN ANDROID_LOG_WARN
ERROR ANDROID_LOG_ERROR

更詳細的可以參考此篇文章android C/C++層添加LOG調試

1 則留言: