使用externalNativeBuild.ndkBuild编译的Android本机调试

使用externalNativeBuild.ndkBuild编译的Android本机调试,android,c++,debugging,android-ndk,Android,C++,Debugging,Android Ndk,我想在以下示例中调试Android Studio(版本2.2)中的本机代码: 我试图编辑应用程序运行/调试配置,并将调试器类型更改为本机或混合,但没有成功。还尝试附加调试程序选择混合或原生,但是在调试器连接到进程时,应用程序不会在C++代码中的断点上停止。 我有一个更大的项目,是建立类似的链接的例子。当前无法重建makefiles,因此我希望使用此类或项目设置运行调试。这种项目设置方式;将externalNativeBuild与ndk build一起使用 有人知道如何调试这些示例吗?不幸的是,+

我想在以下示例中调试Android Studio(版本2.2)中的本机代码:

我试图编辑应用程序运行/调试配置,并将调试器类型更改为本机或混合,但没有成功。还尝试附加调试程序选择混合或原生,但是在调试器连接到进程时,应用程序不会在C++代码中的断点上停止。 我有一个更大的项目,是建立类似的链接的例子。当前无法重建makefiles,因此我希望使用此类或项目设置运行调试。这种项目设置方式;将externalNativeBuild与ndk build一起使用


有人知道如何调试这些示例吗?

不幸的是,+gradle+ndk build不支持从IDE进行调试。解决方案是在应用程序的
build.gradle
中,将构建脚本重写为cmake.

buildTypes {
    debug {
        debuggable true
        initWith debug
        jniDebuggable true
        externalNativeBuild {
            ndkBuild {
                cFlags "-DDEBUG=1"
            }
        }
    }
}
cFlags
是可选的,但很有用。没有在中描述,我是在中找到的


适用于Android Studio 2.2.2+

可能与@LBes重复他正在谈论Android Studio 2.2中的新功能,即externalNativeBuild…我已设法使用cmake作为externalNativeBuild和NDK r12+调试本机代码。仍然无法使用ndk生成调试。。。看起来我必须将所有构建脚本重写为cmake。@marioc64使用cmake作为externalNativeBuild进行本机调试的技巧?我仍然无法在我的本机代码中命中任何断点。感谢您的回复,无论如何,我的本机版本被重写为cmake。这不是真的。调试与库的生成方式无关。你是对的,但问题是调试与Android Studio(IDE)的集成,而不是调试。Studio只是启动LLDB并将其连接到进程。关于cmake或ndk构建,没有任何东西能够支持或阻止这种情况。只要带有调试信息的原始库可用,它就可以由LLDB处理。这是可能的,但gradle android插件应该默认将所有标志设置为正确状态。可能@SBKarr answer就是解决方案,但目前我没有检查这个,因为我的构建切换到了cmake。