如何在android CC++ native編程(ndk)中使用logCat.doc_第1頁
如何在android CC++ native編程(ndk)中使用logCat.doc_第2頁
如何在android CC++ native編程(ndk)中使用logCat.doc_第3頁
如何在android CC++ native編程(ndk)中使用logCat.doc_第4頁
如何在android CC++ native編程(ndk)中使用logCat.doc_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

2011年度CSDN高校俱樂部“優(yōu)秀主席”火熱出爐! 點擊了解英特爾云計算 2012年1月當選微軟MVP的CSDN會員名單揭曉!如何在android C/C+ native編程(ndk)中使用logCat分類: 移動終端開發(fā)2011-11-26 17:2120人閱讀評論(0)收藏舉報/simple/?t896.html.最近在研究Android 2.3.3源代碼的C/C+層,需要對代碼進行一些調(diào)試,但是奇怪的是,直接添加LOGD(XXXXXXXX);,使用logcat卻看不到任何輸出,換成LOGI、LOGV、LOGW、LOGE也沒有效果。于是在網(wǎng)上查找解決方法,經(jīng)過幾次試驗,終于找到了,現(xiàn)在貼到下面?zhèn)渫旱谝徊剑涸趯?yīng)的mk文件中加入:LOCAL_LDLIBS := -llog第二步:在要使用LOG的cpp文件中加入:#include #define LOGD(.) _android_log_print(ANDROID_LOG_DEBUG, keymatch, _VA_ARGS_)第三步:這樣就可以使用了:LOGD(我要看到的調(diào)試信息_);這樣,在logcat端看到的輸出是:D/keymatch( 32):我要看到的調(diào)試信息_如果想改變輸出中的各項內(nèi)容,可以參考相應(yīng)顏色的標示,比如,如果想定義LOGE,就可以把上面的ANDROID_LOG_DEBUG改成ANDROID_LOG_ERROR,同理,LOGI神馬的也都以此類推:#define LOGV(.) _android_log_print(ANDROID_LOG_VERBOSE, ProjectName, _VA_ARGS_)#define LOGD(.) _android_log_print(ANDROID_LOG_DEBUG , ProjectName, _VA_ARGS_)#define LOGI(.) _android_log_print(ANDROID_LOG_INFO , ProjectName, _VA_ARGS_)#define LOGW(.) _android_log_print(ANDROID_LOG_WARN , ProjectName, _VA_ARGS_)#define LOGE(.) _android_log_print(ANDROID_LOG_ERROR , ProjectName, _VA_ARGS_)當然,如果不嫌麻煩,也可以直接使用_android_log_print函數(shù),而不define定義LOGxxx如果還想了解更詳細的內(nèi)容,也可以參考這篇文章: 在android 輸出log 信息 用于調(diào)試另外,有文章稱此方法在編譯動態(tài)庫的時候可能會出問題,會提示cannot find -llog的錯誤。意思是找不到liblog.so這個庫文件。因此需要改成 LOCAL_LDLIBS:= -L$(SYSROOT)/usr/lib -llog 才可以正常編譯。但是我這邊編譯動態(tài)庫的時候,好像不用這樣改也行,沒發(fā)現(xiàn)編譯時提示“cannot find -llog”的錯誤。如果您在實踐過程中發(fā)現(xiàn)有這樣的問題,可以參考該文章,鏈接在此:如何在android native編程中使用logCat2011年度CSDN高校俱樂部“優(yōu)秀主席”火熱出爐! 點擊了解英特爾云計算 2012年1月當選微軟MVP的CSDN會員名單揭曉!log函數(shù)封裝,讓WIN32和android ndk共用相同的log函數(shù),方便調(diào)試分類: android2011-08-27 15:58124人閱讀評論(3)收藏舉報_log.hcpp view plaincopyprint?1. #ifdef _cplusplus 2. extern C 3. #endif 4.5. typedef int (* funcPtr)(const char * format, .); 6.7. typedef struct _Log 8. 9. funcPtr d; 10. funcPtr i; 11. funcPtr e; 12. LOG; 13. extern const LOG Log; 14.15. #ifdef _cplusplus 16. ; 17. #endif _log.ccpp view plaincopyprint?1. #include 2. #include 3. #include 4. #include _log.h 5.6. #define BUFFER_SIZE (1024 * 2) 7. static char db_bufferBUFFER_SIZE; 8.9. #ifdef WIN32 10.11. # define vsnprintf _vsnprintf 12.13. # define LOGD printf 14. # define LOGI printf 15. # define LOGW printf 16. # define LOGE printf 17. # define LOGF printf 18.19. #else / #ifdef WIN32 20.21. # include 22. # include / 這個是輸出LOG所用到的函數(shù)所在的路徑 23. # define LOG_TAG JNILOG / 這個是自定義的LOG的標識 24. # undef LOG / 取消默認的LOG 25.26. /Android.mk中要添加LOCAL_LDLIBS := -llog 27. /# 如果不包含這一句的話,會提示:_android_log_print 未定義 28. # define LOGD(.) _android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,_VA_ARGS_) / 定義LOG類型 29. # define LOGI(.) _android_log_print(ANDROID_LOG_INFO,LOG_TAG,_VA_ARGS_) / 定義LOG類型 30. # define LOGW(.) _android_log_print(ANDROID_LOG_WARN,LOG_TAG,_VA_ARGS_) / 定義LOG類型 31. # define LOGE(.) _android_log_print(ANDROID_LOG_ERROR,LOG_TAG,_VA_ARGS_) / 定義LOG類型 32. # define LOGF(.) _android_log_print(ANDROID_LOG_FATAL,LOG_TAG,_VA_ARGS_) / 定義LOG類型 33.34. #endif /#ifdef WIN32 35.36. #define db_print(_tag, _p, _format) 37. do 38. int n = 0; 39. va_list args; 40. va_start(args, _format); 41. vsnprintf(db_buffer, BUFFER_SIZE - 1, _format, args); 42. db_bufferBUFFER_SIZE - 1 = 0; 43. _p(_tag); 44. n = _p(db_buffer); 45. va_end(args); 46. return n; 47. while (0) 48.49.50. static int log_d(const char * format, .) 51. 52. #ifdef _DEBUG 53. db_print(debug: , LOGD, format); 54. #else 55. return 0; 56. #endif 57. 58.59. static int log_i(const char * format, .) 60. 61. db_print(info : , LOGI, format); 62. 63.64. static int log_e(const char * format, .) 65. 66. db_print(error: , LOGE, format); 67. 68.69. const LOG Log = 70. 71. log_d, 72. log_i, 73. log_e, 74. ; Android.mkjava view plaincopyprint?1. LOCAL_PATH := $(call my-dir) 2. include $(CLEAR_VARS) 3. LOCAL_MODULE := init 4. LOCAL_SRC_FILES := _log.c 5. LOCAL_LDLIBS := -llog 6. include $(BUILD_SHARED_LIBRARY) WIN32下測試main.ccpp view plaincopyprint?1. #include _log.h 2. int main(int argc, char * argv) 3. 4. L

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論