最近在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調試
LOCAL_LDLIBS:= -llog 只有一個減號
回覆刪除