国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

android雜記:C++文件的添加log方法分享

2020-04-11 12:02:58
字體:
來源:轉載
供稿:網友
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> 

今天有事,后續補全,如果大家有更好的,或者特殊的情況,歡迎推薦
3.C++另類堆棧
這個方法是可文件控制的。通過對android設備中的文件讀寫,然后空指針賦值,這樣就可以達到文件控制的目的
該方法好處只要是C、C++文件均可添加此log,無依賴,便捷!也有個不好處,log只能運行到你添加的地方,因為崩庫了,后面的無法運行了。
實現代碼如下:
復制代碼 代碼如下:

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的反匯編工具,在設置后編譯環境后就可以正常使用了,命令如下:
復制代碼 代碼如下:

arm-eabi-addr2line -f -e **.so 地址1 地址2 ... ... 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安国市| 浦江县| 如皋市| 定兴县| 新营市| 夏邑县| 黄骅市| 兴安县| 吐鲁番市| 揭西县| 常州市| 定兴县| 临安市| 丹巴县| 卢氏县| 嵊州市| 凌源市| 竹北市| 平凉市| 营山县| 绩溪县| 南川市| 林甸县| 临汾市| 田林县| 丰台区| 临夏县| 巴里| 广灵县| 衢州市| 凉城县| 许昌市| 巴林右旗| 丰城市| 文登市| 连江县| 化州市| 肃宁县| 广东省| 玛多县| 英吉沙县|