已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2011年度CSDN高校俱樂部“優(yōu)秀主席”火熱出爐! 點(diǎn)擊了解英特爾云計(jì)算 2012年1月當(dāng)選微軟MVP的CSDN會(huì)員名單揭曉!如何在android C/C+ native編程(ndk)中使用logCat分類: 移動(dòng)終端開發(fā)2011-11-26 17:2120人閱讀評(píng)論(0)收藏舉報(bào)/simple/?t896.html.最近在研究Android 2.3.3源代碼的C/C+層,需要對(duì)代碼進(jìn)行一些調(diào)試,但是奇怪的是,直接添加LOGD(XXXXXXXX);,使用logcat卻看不到任何輸出,換成LOGI、LOGV、LOGW、LOGE也沒有效果。于是在網(wǎng)上查找解決方法,經(jīng)過幾次試驗(yàn),終于找到了,現(xiàn)在貼到下面?zhèn)渫旱谝徊剑涸趯?duì)應(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)試信息_如果想改變輸出中的各項(xiàng)內(nèi)容,可以參考相應(yīng)顏色的標(biāo)示,比如,如果想定義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_)當(dāng)然,如果不嫌麻煩,也可以直接使用_android_log_print函數(shù),而不define定義LOGxxx如果還想了解更詳細(xì)的內(nèi)容,也可以參考這篇文章: 在android 輸出log 信息 用于調(diào)試另外,有文章稱此方法在編譯動(dòng)態(tài)庫(kù)的時(shí)候可能會(huì)出問題,會(huì)提示cannot find -llog的錯(cuò)誤。意思是找不到liblog.so這個(gè)庫(kù)文件。因此需要改成 LOCAL_LDLIBS:= -L$(SYSROOT)/usr/lib -llog 才可以正常編譯。但是我這邊編譯動(dòng)態(tài)庫(kù)的時(shí)候,好像不用這樣改也行,沒發(fā)現(xiàn)編譯時(shí)提示“cannot find -llog”的錯(cuò)誤。如果您在實(shí)踐過程中發(fā)現(xiàn)有這樣的問題,可以參考該文章,鏈接在此:如何在android native編程中使用logCat2011年度CSDN高校俱樂部“優(yōu)秀主席”火熱出爐! 點(diǎn)擊了解英特爾云計(jì)算 2012年1月當(dāng)選微軟MVP的CSDN會(huì)員名單揭曉!log函數(shù)封裝,讓W(xué)IN32和android ndk共用相同的log函數(shù),方便調(diào)試分類: android2011-08-27 15:58124人閱讀評(píng)論(3)收藏舉報(bào)_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 / 這個(gè)是輸出LOG所用到的函數(shù)所在的路徑 23. # define LOG_TAG JNILOG / 這個(gè)是自定義的LOG的標(biāo)識(shí) 24. # undef LOG / 取消默認(rèn)的LOG 25.26. /Android.mk中要添加LOCAL_LDLIBS := -llog 27. /# 如果不包含這一句的話,會(huì)提示:_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下測(cè)試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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 腸內(nèi)營(yíng)養(yǎng)與腸外營(yíng)養(yǎng)
- 七年級(jí)傳統(tǒng)文化教案編
- 廣告業(yè)務(wù)員工作參考計(jì)劃范文2
- 電子商務(wù)產(chǎn)業(yè)園租賃合同
- 苗木基地租賃合同
- 停車場(chǎng)車位租用合同
- 六年級(jí)英語(yǔ)上冊(cè)Unit4Ihaveapenpal第一課時(shí)教案人教PEP版
- 2024年跨國(guó)電子產(chǎn)品貿(mào)易合同中英文版版B版
- 2025年生物質(zhì)碳化專用爐合作協(xié)議書
- 2024年跨境電商企業(yè)承包經(jīng)營(yíng)合作協(xié)議集錦3篇
- 浙江省杭州市2023-2024學(xué)年高二上學(xué)期期末學(xué)業(yè)水平測(cè)試政治試題 含解析
- 人力資源規(guī)劃
- 中國(guó)藥典無菌、微生物限度和細(xì)菌內(nèi)毒素檢查方法學(xué)驗(yàn)證內(nèi)容詳解
- 《實(shí)用日本語(yǔ)應(yīng)用文寫作》全套電子課件完整版ppt整本書電子教案最全教學(xué)教程整套課件
- 公司員工手冊(cè)-全文(完整版)
- 鍋爐習(xí)題帶答案
- 土木工程課程設(shè)計(jì)38281
- 農(nóng)村宅基地地籍測(cè)繪技術(shù)方案
- 液壓爬模作業(yè)指導(dǎo)書
- 劇院的建筑設(shè)計(jì)規(guī)范標(biāo)準(zhǔn)
- 遺傳分析的一個(gè)基本原理是DNA的物理距離和遺傳距離方面...
評(píng)論
0/150
提交評(píng)論