源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

android杂记:C++文件的添加log方法分享

  • 时间:2022-05-23 18:02 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:android杂记:C++文件的添加log方法分享
1.添加头文件
[u]复制代码[/u] 代码如下:
#include <utils/Log.h>   //或者  #include <cutils/Log.h> 
这个时候可以使用ALOGE/ALOGI/ALOGW 等方法打印出log 不过有些地方不能这么使用,因为依赖libutils libctuils库 在mk文件见添加如下依赖编译即可
[u]复制代码[/u] 代码如下:
#LOCAL_MODULE := ... ...   #base_intermediates := $(call local-intermediates-dir)  //该行之下添加,这个貌似是查找依赖文件  LOCAL_SHARED_LIBRARIES += \          libutils libcutils      ... ...  include $(BUILD_SHARED_LIBRARY) //该行之上,这时候是开始编译 
2.通常的堆栈
[u]复制代码[/u] 代码如下:
android::CallStack stack;  stack.update(1);  stack.dump(""); 
这个需要加个头文件,不过要特别注意一个问题,这个头必须加在所有头的末尾,不然用不了滴,尤其是看android源码里webkit的时候。需要加的头文件如下:
[u]复制代码[/u] 代码如下:
#include <utils/CallStack.h> 
今天有事,后续补全,如果大家有更好的,或者特殊的情况,欢迎推荐 3.C++另类堆栈 这个方法是可文件控制的。通过对android设备中的文件读写,然后空指针赋值,这样就可以达到文件控制的目的 该方法好处只要是C、C++文件均可添加此log,无依赖,便捷!也有个不好处,log只能运行到你添加的地方,因为崩库了,后面的无法运行了。 实现代码如下:
[u]复制代码[/u] 代码如下:
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的反汇编工具,在设置后编译环境后就可以正常使用了,命令如下:
[u]复制代码[/u] 代码如下:
arm-eabi-addr2line -f -e **.so 地址1 地址2 ... ... 
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部