android雜記:C++文件的添加log方法分享
更新時間:2013年09月25日 16:11:47 作者:
這篇文章介紹了android雜記:C++文件的添加log方法,有需要的朋友可以參考一下
1.添加頭文件
#include <utils/Log.h>
//或者
#include <cutils/Log.h>
這個時候可以使用ALOGE/ALOGI/ALOGW 等方法打印出log
不過有些地方不能這么使用,因為依賴libutils libctuils庫
在mk文件見添加如下依賴編譯即可
#LOCAL_MODULE := ... ...
#base_intermediates := $(call local-intermediates-dir) //該行之下添加,這個貌似是查找依賴文件
LOCAL_SHARED_LIBRARIES += \
libutils libcutils
... ...
include $(BUILD_SHARED_LIBRARY) //該行之上,這時候是開始編譯
2.通常的堆棧
android::CallStack stack;
stack.update(1);
stack.dump("");
這個需要加個頭文件,不過要特別注意一個問題,這個頭必須加在所有頭的末尾,不然用不了滴,尤其是看android源碼里webkit的時候。需要加的頭文件如下:
#include <utils/CallStack.h>
今天有事,后續(xù)補全,如果大家有更好的,或者特殊的情況,歡迎推薦
3.C++另類堆棧
這個方法是可文件控制的。通過對android設備中的文件讀寫,然后空指針賦值,這樣就可以達到文件控制的目的
該方法好處只要是C、C++文件均可添加此log,無依賴,便捷!也有個不好處,log只能運行到你添加的地方,因為崩庫了,后面的無法運行了。
實現(xiàn)代碼如下:
FILE *fp = NULL; //需要注意
fp = fopen("data/test", "r");
if(NULL == fp)
{
return false; //需要返回值時使用
} esle {
fclose(fp);
int *fp = NULL;
*fp = 100; //空指針賦值出錯,小樣就它錯了
return false; //需要返回值時使用
}
一般崩庫了是看不到堆棧的,我們可以通過反匯編來查看具體的堆棧。
在android里編譯出的庫有兩套:一套無符號的,是查看不了的,另一套是有符號的,我們查看的就是這套,
有符號的編譯出來后是在路徑(\out\target\product\generic\symbols\system\lib)下
android中自帶有arm的反匯編工具,在設置后編譯環(huán)境后就可以正常使用了,命令如下:
arm-eabi-addr2line -f -e **.so 地址1 地址2 ... ...
復制代碼 代碼如下:
#include <utils/Log.h>
//或者
#include <cutils/Log.h>
這個時候可以使用ALOGE/ALOGI/ALOGW 等方法打印出log
不過有些地方不能這么使用,因為依賴libutils libctuils庫
在mk文件見添加如下依賴編譯即可
復制代碼 代碼如下:
#LOCAL_MODULE := ... ...
#base_intermediates := $(call local-intermediates-dir) //該行之下添加,這個貌似是查找依賴文件
LOCAL_SHARED_LIBRARIES += \
libutils libcutils
... ...
include $(BUILD_SHARED_LIBRARY) //該行之上,這時候是開始編譯
2.通常的堆棧
復制代碼 代碼如下:
android::CallStack stack;
stack.update(1);
stack.dump("");
這個需要加個頭文件,不過要特別注意一個問題,這個頭必須加在所有頭的末尾,不然用不了滴,尤其是看android源碼里webkit的時候。需要加的頭文件如下:
復制代碼 代碼如下:
#include <utils/CallStack.h>
今天有事,后續(xù)補全,如果大家有更好的,或者特殊的情況,歡迎推薦
3.C++另類堆棧
這個方法是可文件控制的。通過對android設備中的文件讀寫,然后空指針賦值,這樣就可以達到文件控制的目的
該方法好處只要是C、C++文件均可添加此log,無依賴,便捷!也有個不好處,log只能運行到你添加的地方,因為崩庫了,后面的無法運行了。
實現(xiàn)代碼如下:
復制代碼 代碼如下:
FILE *fp = NULL; //需要注意
fp = fopen("data/test", "r");
if(NULL == fp)
{
return false; //需要返回值時使用
} esle {
fclose(fp);
int *fp = NULL;
*fp = 100; //空指針賦值出錯,小樣就它錯了
return false; //需要返回值時使用
}
一般崩庫了是看不到堆棧的,我們可以通過反匯編來查看具體的堆棧。
在android里編譯出的庫有兩套:一套無符號的,是查看不了的,另一套是有符號的,我們查看的就是這套,
有符號的編譯出來后是在路徑(\out\target\product\generic\symbols\system\lib)下
android中自帶有arm的反匯編工具,在設置后編譯環(huán)境后就可以正常使用了,命令如下:
復制代碼 代碼如下:
arm-eabi-addr2line -f -e **.so 地址1 地址2 ... ...
您可能感興趣的文章:
- Android開發(fā)筆記之:Log圖文詳解(Log.v,Log.d,Log.i,Log.w,Log.e)
- Android系統(tǒng)開發(fā)中l(wèi)og的使用方法及簡單的原理
- android輕松管理安卓應用中的log日志 發(fā)布應用時log日志全部去掉的方法
- Android將應用調試log信息保存在SD卡的方法
- Android編程之基于Log演示一個activity生命周期實例詳解
- Android 實現(xiàn)自己的LOG信息
- microlog4android將Android Log日志寫到SD卡文件中實現(xiàn)方法
- Android 日志工具(log)的使用方法
- Android開發(fā)實現(xiàn)的Log統(tǒng)一管理類
相關文章
Android對話框AlertDialog.Builder使用方法詳解
這篇文章主要介紹了Android對話框AlertDialog.Builder使用方法詳解的相關資料,需要的朋友可以參考下2016-03-03
Android性能優(yōu)化之利用強大的LeakCanary檢測內存泄漏及解決辦法
本篇文章主要介紹了Android性能優(yōu)化之利用LeakCanary檢測內存泄漏及解決辦法,有興趣的同學可以了解一下。2016-11-11
Android實現(xiàn)循環(huán)輪播跑馬燈的效果
這篇文章主要介紹了為大家詳細介紹了如何通過Android實現(xiàn)循環(huán)輪播跑馬燈的效果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2023-05-05
Android SharedPreferences存儲的正確寫法
這篇文章主要介紹了Android SharedPreferences存儲的正確寫法的相關資料,需要的朋友可以參考下2017-06-06
記錄Android studio JNI開發(fā)的三種方式(推薦)
JNI (Java Native Interface)是一套編程接口,用來實現(xiàn)Java代碼和其他語言(c、C++或匯編)進行交互。下面通過本文給大家講解Android studio JNI開發(fā)的三種方式,需要的朋友參考下吧2017-12-12
android教程之textview解析帶圖片的html示例
本文介紹的示例適用于android中需要解析帶圖片的htlm數(shù)據,需要的朋友可以參考下2014-02-02
android實現(xiàn)Uri獲取真實路徑轉換成File的方法
這篇文章主要介紹了android實現(xiàn)Uri獲取真實路徑轉換成File的方法,涉及Android操作路徑的相關技巧,需要的朋友可以參考下2015-05-05
Android中okhttp3.4.1+retrofit2.1.0實現(xiàn)離線緩存
這篇文章主要介紹了Android中okhttp3.4.1結合retrofit2.1.0實現(xiàn)離線緩存,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10
Android 仿淘寶、京東商品詳情頁向上拖動查看圖文詳情控件DEMO詳解
本文給大家介紹android 仿淘寶、京東商品詳情頁向上拖動查看圖文詳情控件DEMO詳解,使用兩個scrollView,兩個scrollView 豎直排列,通過自定義viewGroup來控制兩個scrollView的豎直排列,以及滑動事件的處理。對android 拖動查看圖文詳情知識感興趣的朋友一起學習吧2016-09-09

