注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

Android系列六调试  

2013-04-01 20:45:26|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Android系列六调试

 

如果一个程序无法调试,你会不会觉得很痛苦,对,相当痛苦,于是又想起了当年在WIN下写驱动的日子,当后来遇到了SoftIce可以下断点,在所谓的领空里来回穿插时,你可以相见当时的幸福么。

再后来,用VM虚拟机也模拟两台机器调试,再加上一系列的工具,终于可以调试的时候,那种幸福是无法比拟的。

说这么多的废话,就是想告诉大家,调试多么的重要。

因为对ANDROID平台不太熟悉,所以好多的调试方法还是不熟悉的,特别是在JNI里,断点肯定是不会下。亏得网上有一种打印的方法,LINUX上老式的PRINT,有就比没有强,可以在LOGCAT上进行打印。

要想使用打印,首先得在MAKEFILE文件中链接日志库:

LOCAL_PATH := $(call my-dir)
common_SRC_FILES := MyLib.c IrisLib.c
common_C_INCLUDES := CommonStruct.h CASIA_Gen.h 
include $(CLEAR_VARS)

LOCAL_SRC_FILES := $(common_SRC_FILES)
LOCAL_C_INCLUDES += $(common_C_INCLUDES)

LOCAL_MODULE := IrisLib
LOCAL_LDLIBS    := -L$(SYSROOT)/usr/lib -llog


include $(BUILD_SHARED_LIBRARY)

否则会报:

undefined reference to `__android_log_print'

然后在CCPP文件中增加:

#include <android/log.h>
#ifdef __cplusplus
extern "C" {
#endif
#include "CASIA_Gen.h"
#ifdef __cplusplus
}
#endif
#define JNI_DEBUG
#ifdef JNI_DEBUG
#ifndef LOG_TAG
#define LOG_TAG "JNI_DEBUG"
#endif

#define LOGE(msg) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, msg)
#define LOGI(msg) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, msg)
#define LOGD(msg) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, msg)

#endif
#define LOGIO(...) ((void)__android_log_print(ANDROID_LOG_INFO, "JAVA
项目工程", __VA_ARGS__))

使用的示例如下:

LOGI("---------start log write-----------");
LOGIO("--------------------iriscol is   %f",iImgInfo.irisCol);

 

然后大家就都明白了吧,可以把这几个宏定义到你需要监测的地方,当然,这和真正的下断点还是要差不知道多少倍的优势,可是,有总比没有强。

行胜于言,可是行真得很难,但越是艰难困苦,越要迎头赶上。

时不我待,失不再来。

  评论这张
 
阅读(731)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017