ndk调试_eclipse cdt gdb调试android ndk程序 - CSDN
精华内容
参与话题
  • 超简单的NDK单步调试方法

    万次阅读 2012-11-26 09:36:02
    最近为了性能需求,开始搞JNI,白手起搞真心不容易。...JNI编完之后,不能调试,是不是很蛋疼,不像android Java可以看出错信息。JNI crash之后,界面上表示为没有任何反应,过段时间直接退出应用,没有提示、也没有

    最近为了性能需求,开始搞JNI,白手起搞真心不容易。中间差点崩溃了好几次,最终总算得到一点心得。

     

    JNI对性能的提升没有我预想中的大,对于for循环的速度提升大概在1倍左右,所以如果数量级不大的话,性能提升不会很明显

    JNI编完之后,不能调试,是不是很蛋疼,不像android Java可以看出错信息。JNI crash之后,界面上表示为没有任何反应,过段时间直接退出应用,没有提示、也没有XXX已停止运行。第一次遇到真是无从下手,有没有!!!,经过对Java层的log研究发现,原来JNI crash后,cpu就直接死在那里(相当于assert,程序停止运行)。果断时间后JAVA层发现程序已挂之后(进程僵死),就强制杀死该进程。于是程序直接退出而无提示。(以上分析纯属个人分析,如有不对,敬请指正)。这时发现如果能有单步调试功能那该多好!!

     

     百度一下 ndk单步调式 一般能搜出如下结果:

    1、安装CDT插件

    2、安装Sequoyah插件

    3、使用插件装入JNI文件、导入JNI头文件

    4、配置eclipse JNI编译环境

    5、修改ndk-gdb脚本

    6、运行ndk-gdb脚本,并修改生成的文件(windows需安装cygwin)

    7、配置eclipse native调试环境

    吓尿了,有没有!!!单步调试这么麻烦!!!麻烦不说,windows下使用ndk-gdb效率还特别低

     

    另外,对于修改google release的ndk脚本,我一直持保留态度,安说release的脚本应该直接能用的,为什么要做修改后才能用呢?

     

    以上步骤,我花了2~3小时搞定,仅仅为了能打个断点~~~

     

    在机缘巧合下,我看到一篇google官方的文章“Using NDK Plugins”

    令人兴奋的是,ADTr20已经支持JNI单步调试,再也不需要如上这么麻烦的步骤了

    你现在需要做的只需以下2步:

    1、使用ndk-build编译时,加上如下参数NDK_DEBUG=1,之后生成so文件之外,还会生成gdbobserver,gdb.setup调式文件

    2、在项目的Debug Configuration中选择Android Native Apllication,点击下方Debug

    3、Enjoy your Debugging!

     

    如何?是不是超简单,而且调试速度还相当快哦

     

    ADTr20已经比较完美支持NDK开发了。可以集成ndk编译,只需在项目右键Add Native Support,就能自动生成jni文件,并部署编译环境(注意这个过程是不可逆的,手动删除jni文件后,会编译不过)。如果需要生成NDK调试文件,需要右键项目->properties->C/C++ build->Builder Setting 把默认的Build Command : ndk-build 修改成 ndk-build NDK_DEBUG=1

     

    最后推荐一个很有用的android官方网站http://tools.android.com/ 这个网站包含大多数ADT使用方法和新版ADT的介绍,获益匪浅

    关于如何使用ADT进行ndk单步调式就在http://tools.android.com/recent/usingthendkplugin


    只可惜这种方法只能在ndk环境下使用,如果要对framework中的jni进行单步调试,应该就行不通了,推荐的一种方法是把它在NDK中编译调试完毕,然后将生成的so放在system/lib下

    展开全文
  • NDK调试

    2019-09-24 08:34:14
    将你sdk和ndk的根目录放到环境变量path中。配置完成之后可以来个小检测:  在命令行分别输入adb和ndk-stack后点击回车,只要他不报你这些东西找不到,就表示你配置好了; 2、在命令行中使用cd进入当前工程下; 3...

    第一种(控制台输出):

    1、配置好环境变量,这是为了方便起见。将你sdk和ndk的根目录放到环境变量path中。配置完成之后可以来个小检测:

      在命令行分别输入adb和ndk-stack后点击回车,只要他不报你这些东西找不到,就表示你配置好了;

    2、在命令行中使用cd进入当前工程下;

    3、接下来在命令行输入:adb logcat | ndk-stack -sym [so文件所在的目录]。然后点击回车,然后会看到命令行一直处于等待状态,表示你已经可以运行手机进行调试了。以我个人的为例子,我输入的是:adb logcat | ndk-stack -sym obj/local/armeabi-v7a

    4、当程序运行出现问题的时候,命令行就会显示出来。

    第二种(打log):

    (1) android.mk文件中添加LOCAL_CFLAGS+=-DDEBUGLVL=0和LOCAL_LDLIBS    += -llog

    (2)加入头文件#include <android/log.h>

    (3)为了方便,加一些宏定义:

    1 #define  LOG_TAG    "libibmphotophun"   //定义logcat中tag标签
    2 #define  LOGI(...)  __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
    3 #define  LOGE(...)  __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)

    (4)使用:

    LOGI("debug!");LOGI("%d %d",6,6);

    在eclipse的debug中就会输出相应的信息;

    转载于:https://www.cnblogs.com/guanking19/p/4265562.html

    展开全文
  • 时隔一年,多了些磨砺...有很多人私信想让NDK系列文章持续下去,自己现在想想是该捡起来了,在这种环境下不能再纵容自己了,以往的知识都该捡起来了。开始本篇前还是建议先按顺序看看前面这三篇吧,否则可能有些脱节。

    1 背景

    时隔一年,多了些磨砺,懂了些故事,悟出些道理,但这一年技术却停留在了原地,以前的 Unix 高阶 C 在现在公司暂时无用武之地了,说句实话,打心里我还是喜欢硬件和 C 语言,只是可惜了。有很多人私信想让 NDK 系列文章持续下去,所以就顺带作为自己对过去的回顾整理吧。开始本篇前还是建议先按顺序看看前面这三篇吧,否则可能有些脱节。

    《NDK-JNI实战教程(一) 在Android Studio运行第一个NDK程序》
    《NDK-JNI实战教程(二) JNI官方中文资料》
    《NDK-JNI实战教程(三) 从比Hello World稍复杂点儿的NDK例子说说模板》

    上面这三篇内容其实在某种程度上只具备指点意义了,因为很多工具在这一年里发生了很大变化,所以里面的一些配置在现在看来似乎有些不太恰当了,不过你能自己发现这些版本的兼容性问题并改正它也是一种自我调试的能力。

    这里写图片描述

    【工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果。私信联系我

    2 约谈AS及Gradle新版本

    还记得之前的 Google IO 大会么? Google 除了在打包系统中集成了 NDK 的支持还将 JetBrains 的 C/C++ IDE CLion 直接集成在了 AS 中,关于 CLion 就不用多说了,做 C 开发且喜欢尝鲜的相信都不陌生的;这个结合对于现在的NDK开发来说简直是屌爆了,因为再也不像以前那么苦逼使用 Eclipse 等工具去写 C 代码,完事再编写 Android.mk 与Application.mk 用 ndk-build 命令行去巴拉巴拉编译了,对于应用层的 NDK 开发一下就变的 Easy 的许多了(现在再想想刚毕业那会在上家公司做 Token Lib 的 NDK 开发时是多么的麻烦与蛋疼!),不过源码下的 NDK 开发还是建议继续使用 Android.mk 的方式去匹配 Android 源码编译框架吧。当然了,近期的 AS 与 Gradle 版本的快速更新对 NDK 开发又有了更加牛叉的体验,因为它完全支持使用 GDB 和 LLDB (不清楚这两是啥的请自行脑部Unix编程基础)来 GUI 化 debug 我们得 native 代码了(以前真的好蛋疼,命令行巴拉巴拉的,泪奔啊!)。

    总之现在的 AS 和 Gradle 已经趋于实验完善 NDK 开发了,主要表现在如下方面:

    • AS 完全支持 GUI 模式的 GDB/LLDB 调试 native 代码(LLDB调试引擎需要gradle-experimental plugin的支持)。
    • AS 可以很好的直接编写 native 代码。
    • Java 层代码声明好以后 AS 可以自动帮我们生成 JNI 接口规范代码。
    • 推出了几乎针对 NDK 的实验版 Gradle 插件。

    可以看见,现在 NDK 开发已经渐渐的变得越来越方便了,牛叉的一逼!

    2-1 原Gradle与AS下NDK开发

    当我们在 AS 中进行 NDK 开发时 Gradle 脚本的编写其实在前面几篇文章已经给出了,基本模板如下:

    //Project的build.gradle文件
    buildscript {
        repositories {
           jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:1.5.0'
        }
    }
    
    allprojects {
        repositories {
            jcenter()
        }
    }
    //Module的build.gradle文件
    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion = 23
        buildToolsVersion = "23.0.2"
    
        defaultConfig {
            applicationId = "com.example.hellojni"
            minSdkVersion 19
            targetSdkVersion  23
    
            ndk {
                moduleName = "hello-jni"
                //......
            }
        }
    
        buildTypes {
            release {
                minifyEnabled = false
                proguardFiles.add(file('proguard-rules.txt'))
            }
        }
    }

    可以发现很常规,就是在 android 闭包中添加 ndk 闭包写明一些 lib 相关东西即可,然后其他流程和我们前面几篇没啥区别的。不过有的同学使用新版 AS 和 Gradle 构造上面的脚本可能会遇上一个错误,如下:

    Error:(12, 1) A problem occurred evaluating project ':app'.
    > Error: NDK integration is deprecated in the current plugin.  Consider trying the new experimental plugin.  For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental.  Set "android.useDeprecatedNdk=true" in gradle.properties to continue using the current NDK integration.
    Information:BUILD FAILED

    哈哈,看见没有,这个错误的原因就是我们 2-2 中准备要介绍的,因为在当前 Gradle 插件版本中这样集成 NDK 的写法已经过时不推荐了,它推荐了新的实验版 Gradle 插件;有的小伙伴可能觉得实验版不爽,就是想用当前版本 Gradle 插件,那也没事,这里给出解决方法,如下:

    1、在Project的根目录下创建 gradle.properties 文件;
    2、在创建的文件中写上 android.useDeprecatedNdk=true 即可;
    3、这样就声明了继续使用过时的 NDK ,然后我们再次构建工程就OK了;

    其他流程和前面几篇文章没有区别,直接使用即可,下面我们就来看看新的实验版 Gradle 插件 NDK 开发吧。

    2-2 新实验版Gradle插件与AS下NDK开发

    前面几篇 NDK 文章都是基于上面 2-1 的 Gradle 脚本来构建了,既然说到了新实验版本 Gradle,那我们就来看看有啥区别(除过 Gradle 区别别的与前几篇 NDK 开发流程保持一致即可),如下:

    //Project的build.gradle文件
    buildscript {
        repositories {
           jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle-experimental:0.7.0-alpha1'
        }
    }
    
    allprojects {
        repositories {
            jcenter()
        }
    }
    //Module的build.gradle文件
    apply plugin: 'com.android.model.application'
    
    model {
        android {
            compileSdkVersion = 23
            buildToolsVersion = "23.0.2"
    
            defaultConfig.with {
                applicationId = "com.example.hellojni"
                minSdkVersion.apiLevel = 4
                targetSdkVersion.apiLevel = 23
            }
        }
    
        /*
         * native build settings
         */
        android.ndk {
            moduleName = "hello-jni"
            /*
             * Other ndk flags configurable here are
             * cppFlags.add("-fno-rtti")
             * cppFlags.add("-fno-exceptions")
             * ldLibs.addAll(["android", "log"])
             * stl       = "system"
             */
        }
        android.buildTypes {
            release {
                minifyEnabled = false
                proguardFiles.add(file('proguard-rules.txt'))
            }
        }
        android.productFlavors {
            // for detailed abiFilter descriptions, refer to "Supported ABIs" @
            // https://developer.android.com/ndk/guides/abis.html#sa
            create("arm") {
                ndk.abiFilters.add("armeabi")
            }
            create("arm7") {
                ndk.abiFilters.add("armeabi-v7a")
            }
            create("arm8") {
                ndk.abiFilters.add("arm64-v8a")
            }
            create("x86") {
                ndk.abiFilters.add("x86")
            }
            create("x86-64") {
                ndk.abiFilters.add("x86_64")
            }
            create("mips") {
                ndk.abiFilters.add("mips")
            }
            create("mips-64") {
                ndk.abiFilters.add("mips64")
            }
            // To include all cpu architectures, leaves abiFilters empty
            create("all")
        }
    }

    看见了吗?Google 当前正在实验的 Gradle 插件已经更新到了 gradle-experimental 0.7.0-alpha1 ,可以明显感觉到 Project 和 Module 的 build.gradle 文件编写闭包都有了变化,细节的相信不需要我再解释了,只是让大家知道有这么回事就行了;框框架架有调整,但是实质其实没啥变化的,大家注意这里新的闭包规则就行了。

    PS:关于变化和详细的ABI等细节参见官方文档就行了,非常详细的。

    2-3 约谈题外技能

    还记不记得我们前面的几篇 NDK 开发都需要手动命令行去 javah 生成 jni 头文件吗?是不是觉得很蛋疼呢?哈哈,AS 有一个功能相信你不陌生吧,那就是 External Tools 自定义功能。所以我们可以通过自定义 AS 的Tools-External Tools,添加 javah 的支持即可通过 AS 直接生成 jni 头文件,设置如下图:
    这里写图片描述

    当然了,有时候我们需要使用 Android.mk 和 Application.mk 的做法生成 so 等库文件发布使用,这个也容易,也是直接自定义 Tools-External Tools 即可,如下是 ndk-build 与 ndk-build clean 命令的 AS 自定义:
    这里写图片描述

    这里写图片描述

    有了上面这种自定义的 Tools 那就提高很多效率了,譬如我们编译完 Java 文件后在 Project 栏选中要生成 jni 头文件的 java 源文件右键到 External Tools 中的 javah 就能看见 jni 文件夹下面自动生成了对应的 jni 规范头文件;在 Project 栏选中 jni 目录右键到 External Tools 中的 ndk-xxx 相关就能编译生成 so 等文件或者清空编译结果。

    当然了,你依旧可以选择像前几篇文章叙述的那样开发 NDK,或者直接在源码环境下开发,又或者混合开发,这都是你自己的选择而已。至于当前选择那个版本的 Gradle 进行 NDK 开发也一样看你个人兴趣了。

    【工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果。私信联系我

    3 约谈NDK调试

    关于 NDK 的调试一直都是个坑,好在 Google 在大力布局 AS 时开始来填坑了;以前 NDK 的调试都只能依赖于 GDB 命令行的调试,而现在却变得 GUI 化,方便了许多。关于 NDK 的调试这里也是点到为止,因为不是很复杂,有 C 语言开发经验的都很熟悉的,没啥深奥的,只用记住流程就行了。

    3-1 约谈AS下新Gradle插件NDK调试

    在现在版本的 AS 中通过 gradle-experimental plugin 插件和 LLDB 的配合使 NDK 调试变得很人性化了,现在基本都是傻瓜模式的 GUI 操作了,具体表现如下图:
    这里写图片描述

    可以看见,使用 AS 调试 NDK 和调试 Java 代码基本没啥区别,只是这里的目标选择的是 app-native,同时需要在 SDK Manager 中确认安装了 LLDB 工具。

    3-2 约谈AS下原Gradle插件NDK调试

    当然了,有些人可能不喜欢实验板的 Gradle 插件,就想用旧的,可是你会发现按照上面那样选择 native-app 后使用 AS 调试会抛出如下提示窗口:
    这里写图片描述

    看着红色地方了吗?不可调试版本,所以我们如果想用原 Gradle 调试 NDK 就需要在 module 的 gradle 文件中进行如下配置:

        buildTypes {
            debug {
                jniDebuggable true
            }
        }

    就这样 OK 了,我们就可以随意的调试了,享受此刻吧!

    3-3 约谈其他方式的NDK调试

    所谓的其他方式就当做缅怀吧,这可能是我刚接触 NDK 时用的最多也最原始的方式了,那就是 ndk-gdb 手动命令行调试。我想现在基本没必要拥抱它了,所以也就不多介绍了。

    【工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果。私信联系我

    4 总结

    本文其实没啥技术含量,只是一个工具版本过度的介绍文章,但是大家一定要了解 NDK 的灵魂是 C/C++ 代码的编写,因为很多人一直都说 JNI 开发啥玩意的,其实这里再次阐明这个误区。NDK 开发是 C/C++ 的开发,上层是 Java 的开发,Java 与下面 C/C++ 相互调运的约定接口才叫做 JNI,JNI 接口与 NDK 代码最终合并编译为库文件供上面的 Java 调运而已,一般 NDK 开发和 Java JNI 开发不属于一个团队进行,但是接口规则的约定却时双方商榷的。

    【工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果。私信联系我

    这里写图片描述

    展开全文
  • 一、新建项目新建项目,没有发现Include C++ Support 选项。因为印象中是有过该选项的,找了半天没找到。后来无意间拖了下窗口大小,原来是被隐藏了,真特么坑。新建一个测试项目,勾选Include C++ Support 选项,看...

    一、新建项目

    新建项目,没有发现Include C++ Support 选项。因为印象中是有过该选项的,找了半天没找到。

    后来无意间拖了下窗口大小,原来是被隐藏了,真特么坑。

    新建一个测试项目,勾选Include C++ Support 选项,看看工程上有哪些不同。

    1、gradle

    首先看gradle文件,android节点下添加:

    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
    

    defaultConfig节点下添加:

    externalNativeBuild {
        cmake {
            cppFlags "-std=c++14"
        }
    }
    

    2、CPP

    与Java节点同级多了一个cpp的节点,对应目录为src\main\cpp,与src\main\java同级,默认只有一个native-lib.cpp文件,没有.mk文件及其他,比较简单:

    #include <jni.h>
    #include <string>
    
    extern "C"
    JNIEXPORT jstring
    
    JNICALL
    Java_com_bigsing_myapplication_MainActivity_stringFromJNI(
            JNIEnv *env,
            jobject /* this */) {
        std::string hello = "Hello from C++";
        return env->NewStringUTF(hello.c_str());
    }
    

    3、CMakeLists.txt

    在app目录下多了一个CMakeLists.txt文件。

    # For more information about using CMake with Android Studio, read the
    # documentation: https://d.android.com/studio/projects/add-native-code.html
    
    # Sets the minimum version of CMake required to build the native library.
    
    cmake_minimum_required(VERSION 3.4.1)
    
    # Creates and names a library, sets it as either STATIC
    # or SHARED, and provides the relative paths to its source code.
    # You can define multiple libraries, and CMake builds them for you.
    # Gradle automatically packages shared libraries with your APK.
    
    add_library( # Sets the name of the library.
                 native-lib
    
                 # Sets the library as a shared library.
                 SHARED
    
                 # Provides a relative path to your source file(s).
    
                 src/main/cpp/native-lib.cpp )
    
    
    # Searches for a specified prebuilt library and stores the path as a
    # variable. Because CMake includes system libraries in the search path by
    # default, you only need to specify the name of the public NDK library
    # you want to add. CMake verifies that the library exists before
    # completing its build.
    
    find_library( # Sets the name of the path variable.
                  log-lib
    
                  # Specifies the name of the NDK library that
                  # you want CMake to locate.
                  log )
    
    # Specifies libraries CMake should link to your target library. You
    # can link multiple libraries, such as libraries you define in this
    # build script, prebuilt third-party libraries, or system libraries.
    
    target_link_libraries( # Specifies the target library.
                           native-lib
    
                           # Links the target library to the log library
                           # included in the NDK.
                           ${log-lib} )
    

    其中native-lib为最终生成的SO的名称(libnative-lib.so),默认CPU为armeabi-v7a

    默认的工程属性不用配置,debugger默认为auto会自动适配,直接在cpp里下断点,调试方式运行App,会自动断下,变量数值均能在调试状态下看到。

    试用了下AndroidStudio对NDK的调试支持的还不错,于是打算把过去的项目也支持起来,方法请看下节。

    二、已有项目

    1、安装C++调试器LLDB

    由于之前一直没有使用过AndroidStudio调试过native的代码,网上了解到AndroidStudio调试NDK是需要一个LLDB的插件,默认是没有的,所以先手动安装一下。

    这里有个另类的方法:“Edit Configurations”打开程序配置,在debugger里选择Native(默认为auto),然后运行App,因为工程之前一直是只有Java代码的,所以这里选择了Native,AndroidStudio会提示并没有安装C++的调试器,根据提示安装即可。

    可以看出,安装的调试器是LLDB。

    2、Link C++ Project with Gradle

    在老项目里面添加NDK的支持,可以右键项目选择菜单:Link C++ Project with Gradle

    编译方式有两种:CMake和ndk-build,其中ndk-build是传统方式,AndroidStudio默认推荐CMake方式,也许这是以后的主流方式,所以我们选择默认的CMake.

    然后是指定CMakeLists.txt文件的路径,这里可以复制新建项目的CMakeLists.txt文件到现有项目的app目录下,把它放到和proguard-rules.pro相同的文件夹下即可。然后把这个CMakeLists.txt文件的全路径输入进去,点OK。

    这个时候会发现gradle文件自动添加了:

    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
    

    但是并未指定C++的版本,可以参考新建项目的内容手动添加:

    externalNativeBuild {
        cmake {
            cppFlags "-std=c++14"
        }
    }
    

    3、整理C++源码的文件组织形式

    新建一个cpp目录:src\main\cpp,与src\main\java同级,把C++源码文件移动至此目录下,并有序组织好。

    4、修改CMakeLists.txt

    由于是复制的demo工程的CMakeLists.txt文件,比较简单,不能够满足现有工程,需要修改一下。这里说一下常用的几个功能:

    • 设置其他后缀文件(例如.S汇编文件)为可编译源文件:
    set_property(SOURCE src/main/cpp/art/art_quick_dexposed_invoke_handler.S PROPERTY LANGUAGE C)
    
    • 设置多个不定数量的源文件(也即使用*星号通配符的方式):
    file(GLOB native_srcs "src/main/cpp/*.cpp" "src/main/cpp/dalvik/*.cpp" "src/main/cpp/art/*.cpp" "src/main/cpp/art/*.S")
    add_library( # Sets the name of the library.
                 native-lib
    
                 # Sets the library as a shared library.
                 SHARED
    
                 # Provides a relative path to your source file(s).
                 ${native_srcs}
                )
    
    
    • 链接三方SO库文件(例如我需要使用三方的libsubstrate.so库做测试):
    file(GLOB libs src/main/cpp/3rd/libsubstrate.so src/main/cpp/3rd/libsubstrate-dvm.so)
    target_link_libraries( # Specifies the target library.
                           native-lib
    
                           # Links the target library to the log library
                           # included in the NDK.
                           ${libs}
                           ${log-lib} )
    

    5、恢复debugger为默认的auto

    Edit Configurations”打开程序配置,在debugger里选择auto,因为之前修改为了Native。这样,无论是Java代码还是C++代码均可以调试了。

    三、CMakeLists.txt配置及学习资源

    这个需要持续学习了,毕竟新接触的,有一些参考文件:

    四、总结

    • 能支持对C++代码的动态调试,无疑是非常强大的功能,关键现在AndroidStudio对C++代码在编辑器也支持的很好,所以总体是建议迁移过来的。

    • 不足就是编译速度太慢了,VisualStudio编译下来秒间就能完成了,AndroidStudio下要十几秒甚至更长。在调试的时候启动LLDB也很慢,有时一直卡在Starting LLDB server

    • 建议VS和本方法结合使用,需要调试的时候就用AndroidStudio调试,如果仅仅是编译C++代码则可以使用VS,VS的方法参见:使用VisualStudio高效开发调试AndroidNDK

    展开全文
  • NDK DEBUG方法

    千次阅读 2014-11-25 15:07:19
    NDK DEBUG方法 一、JNI单步调试,Debug As Android Native Apllication 二、借用NDK-STACK调试工具
  • 使用Android Studio 进行NDK开发和调试

    千次阅读 2018-08-07 10:35:55
    个人认为使用Android Studio作NDK开发是必然趋势,所以本文将简单介绍如何在Android Studio上实现NDK开发。 简介 JNI JNI 是Java Native Inteface的缩写,是Java中定义的一种用于连接Java和C/C++接口的一种实现...
  • Android ndk-gdb 调试

    万次阅读 2014-03-12 19:26:42
    Android ndk-gdb 调试 前提:保证NDK环境建立ok,可参考文章“Windwos下Android NDK开发环境搭建“ 若想在设备上使用,必须取得root权限才可。 注意在/home/用户/.bash_profile中环境变量的配置: 以上配置是为...
  • NDK Build 参数

    万次阅读 2011-08-27 11:35:28
    'ndk-build' Overview ndk-build概述 I. Usage: 一、使用方法: The Android NDK r4 introduced a new tiny shell script, named 'ndk-build', to simplify
  • NDK Build 用法(NDK Build)

    万次阅读 2013-01-22 16:15:57
    1、ndk-build的用法 Android NDKr4引入了一个新的、小巧的shell脚本ndk-build,来简化源码编译。 该文件位于NDK根目录,进入你的工程根目录或子目录之后,在命令行下调用即可。例如:  cd $PROJECT  $NDK/ndk-...
  • 最近在做 NDK 编程相关的项目,但是在进行调试的时候,发现 Android studio 根本无法进入 debug 模式,程序会无视断点,继续运行。 先贴出我的 sdk 版本 compileSdkVersion 22 buildToolsVersion '27.0.3' ...
  • 做NDK开发的时候,调试是比较头疼的事情...这里我流水似的介绍一下在真机下的ndk调试方案,以下是我的笔记: NDK进行调试的时候,遇到了几个问题: 1) 需要对Android手机有root权限来设置执行一些命令 2)配置n
  • 使用ndk-gdb调试android native程序

    千次阅读 2016-04-05 21:16:48
    1. C++代码必须使用`ndk-build`编译,传入参数`NDK_DEBUG=1`。编译完成后,会在lib目录下生成gdbserver,供后续调试使用。 2. 设置AndroidManifest.xml,在**application**项下面设置`android:debuggable="true
  • android ndk之常用命令

    千次阅读 2011-10-25 23:49:23
    'ndk-build' Overview ndk-build概述 I. Usage: 一、使用方法: The Android NDK r4 introduced a new tiny shell script, named 'ndk-build', to simplify building machine code. Android NDK r4引入一个新的...
  • Android NDK单步断点调试

    千次阅读 2014-09-28 23:40:58
    转自:http://blog.csdn.net/wutianyin222/article/details/8222838
  • eclipse下ndk调试

    万次阅读 2012-09-18 22:24:16
    搞了半天,各种错误,不过结果是好的,终于可以调试native代码了,哈哈~~记录一下。 参考:http://tools.android.com/recent/usingthendkplugin 为了避免上面链接失效,还是把上面链接内容在下面复制一份。 我...
  • Android ndk-gdb 调试初探

    千次阅读 2012-03-06 11:26:19
    1. ndk-build NDK_DEBUG=1 来编译jni文件夹下的c++文件. NDK_DEBUG=1这个参数可以保证编译后的native方法可调试。 * 另外一种方法是修改AndroidManifest.xml 中的application的属性 2. ndk-gdb需要...
  • 关于NDK调试的文章,在网上能搜到几篇写得很好的。大概看了下,觉得应该不会太难。但真正能java和c混合调试,足足花了我一天的时间。一开始实在是太大意。整个过程下来,要求每一步都不能出错,不然就是折腾。所以我...
  • Android Native Code调试

    千次阅读 2011-04-04 22:16:00
    弄了一天终于把调试android ... 利用ndk下的gdb1.) 安装cygwin,将ndk的路径加入/home/$USER/.bash_profile下NDK=/cygdrive/d/android/ndk/android-ndk-r5bexport PATH=$NDK:$PATH2.) 在cgywin下,进入应用所在的目
  • 测试发现 ...调试才本地代码方便,代码提示功能正常,图标改成由绿色改为黄色 看来所言非虚,越来越好呀 终于可以愉快简单的使用ndk开发了 **在 (android studio 2.1 +gradle-experimental:0.6.0 +NDK
  • Android NDK调试C++源码

    千次阅读 2013-08-09 17:22:22
    Eclipse+ADT+NDK调试C源码的方法 1. 相关软件 adt-bundle-windows-x86.zip --- Eclipse集成ADT插件,需要联网安装相应的Android SDK。 jdk-6u43-windows-i586.exe --- JDK6。Eclipse运行需要JAVA环境,编译...
1 2 3 4 5 ... 20
收藏数 14,169
精华内容 5,667
关键字:

ndk调试