国产探花免费观看_亚洲丰满少妇自慰呻吟_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 ... ... 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青阳县| 阿拉善左旗| 华阴市| 教育| 许昌县| 合水县| 中西区| 汝阳县| 宜昌市| 新乐市| 林州市| 勃利县| 柳林县| 克拉玛依市| 龙山县| 偃师市| 天柱县| 隆回县| 霍山县| 老河口市| 石棉县| 宜川县| 通许县| 嵩明县| 苍山县| 新宁县| 安顺市| 岗巴县| 邮箱| 赞皇县| 和田市| 刚察县| 遂平县| 南康市| 辽阳县| 瓮安县| 屏东县| 巩义市| 沁阳市| 临清市| 黄梅县|