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

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内有个例子可以参考);

 

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

转载于:https://www.cnblogs.com/Zephyroal/p/3971549.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值