码迷,mamicode.com
首页 > 移动开发 > 详细

Android NDK中的C++调试踩坑标记

时间:2014-09-14 21:59:07      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:android   blog   java   ar   文件   div   sp   代码   log   

RT,

Android NDK中的C++调试,

GDB调试比较麻烦,在ADT Eclipse中:

1.配置好NDK给工程加上Native Support

2.编译中加上NDK_DEBUG=1

3.然后改造下mk文件:

#APP_DEBUG will be set by android-ndk if NDK_DEBUG=1 is set.
ifdef APP_DEBUG
   ifeq ($(APP_DEBUG),true)
      CFLAGS+=	-O0 -g
	  LOCAL_CFLAGS+=	-D_DEBUG
	  APP_OPTIM := debug
   else
	  CFLAGS+=	-O2 -g 
	  LOCAL_CFLAGS+=	-DNDEBUG
	  APP_OPTIM := release
  endif
endif

即可任意断点调试,

这是理想情况,平时会有各种情况出现,之前经验是多下几个断点就好,

一直没太注意,

今日遇到了一坑,断点无论如何也挂不上,

仔细研究后发现:

1. 目录里千万不能含有空格,否则就是“No symbol table is loaded. Use the "file" command”,一头雾水,哪里出错都不知道;

2. 在Java代码里System.loadLibrary加上断点,可以很好地避免断点无法挂上的情况(按理论上这不会起作用的,Java/GDB 两个Debugger只能启其一);

3. 更好的解决方案就是用libandroid_native_app_glue,纯C/C++实现(NDK内有个例子可以参考);

 

时间消耗甚久,踩坑留标记,望以飨后人.

Android NDK中的C++调试踩坑标记

标签:android   blog   java   ar   文件   div   sp   代码   log   

原文地址:http://www.cnblogs.com/hmxp8/p/3971549.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!