zoukankan      html  css  js  c++  java
  • 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内有个例子可以参考);

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

  • 相关阅读:
    IE6中布局常见问题
    -bash: grunt-cli: command not found
    字符长度
    Mac下safari、chrome打开开发者工具快捷键
    line-height:150%和line-height:1.5的区别
    JavaScript中的apply()、call()、bind()
    JavaScript中的 this
    JavaScript中的var与作用域
    onload与ready的区别
    浏览器的同源策略
  • 原文地址:https://www.cnblogs.com/Zephyroal/p/3971549.html
Copyright © 2011-2022 走看看