wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Windows下调试Android NDK大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在将一个复杂的C应用程序移植到Android,作为SO库,用瘦java层包装. 经过几个小时的麻烦,我在Android下编译代码,但当然,应用程序崩溃:( 环顾四周后,我明白在Android下调试C应用程序的唯一方法是通过gdb.既然我对gdb没有很多经验,那么任何人都可以分享一些见解吗? 任何人都有Windows下的gdb教程:)? 谢谢 对于更新版本的NDK(我使用的是r7c),您可以构建
我正在将一个复杂的C应用程序移植到Android,作为SO库,用瘦java层包装.
经过几个小时的麻烦,我在Android下编译代码,但当然,应用程序崩溃:(

环顾四周后,我明白在Android下调试C应用程序的唯一方法是通过gdb.既然我对gdb没有很多经验,那么任何人都可以分享一些见解吗?

任何人都有Windows下的gdb教程:)?

谢谢

对于更新版本的NDK(我使用的是r7c),您可以构建调试版本

>将android:debuggable =“true”标志添加到< Application> AndroidManifest.xml中的标记
>使用NDK_DEBUG = 1调用ndk-build(如果使用unix shell运行ndk-build,则不需要NDK_DEBUG标志)

在Windows上,事情变得有点棘手,因为使用ndk-gdb,你仍然需要从NDK r7c开始使用bash(或cygwin),但是如果你使用任何一个pre-cash,运行在cygwin bash中的ndk-build会遇到权限问题内置静态库

我在Windows机器上的解决方案是

>将android:debuggable =“true”标志添加到AndroidManifest.xml中的< application标签(与上面相同)
>在cmd(windows’命令提示符)中:使用NDK_DEBUG = 1调用ndk-build
>在cygwin bash中:运行ndk-gdb

为了快速初步调查本机库,使用一个按钮创建一个简单的活动来触发库输入功能和loadLibrary在活动中,如:

class MyActivity extends Activity {
    static {
       System.loadLibrary("mylibrary");
    }

    /* other functions like onCreate,etc... */

    public native void libfunc();

    public void onClick(View v){
       libfunc();
    }
}

因此,当gdb启动时,实际加载了有问题的库,但在程序崩溃之前你仍然有时间设置断点等;当你完成设置调试器时,在(gdb)提示符下键入continue(或只是’c’),然后单击按钮启动崩溃程序并快乐调试…

大佬总结

以上是大佬教程为你收集整理的在Windows下调试Android NDK全部内容,希望文章能够帮你解决在Windows下调试Android NDK所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: