debuggingC ++ /本机库模块不能与Android Studio一起使用(使用Cmake)

我无法debugging我的库模块的C ++文件。

这一般可能吗?

如果应用程序项目包含c ++代码,则debugging工作正常。 但是我想把C ++代码移到一个库模块中。

会话开始时的错误信息:

现在启动本机debugging会话

注意! 找不到符号目录 – 请检查您的原生debuggingconfiguration

我的lib的gradle文件:

apply plugin: 'com.android.library' android { compileSdkVersion 24 buildToolsVersion "25.0.2" defaultConfig { minSdkVersion 16 targetSdkVersion 21 versionCode 1 versionName "1.0" externalNativeBuild { cmake { arguments "-DANDROID_PLATFORM_LEVEL=${11}", '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static' } } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } externalNativeBuild { cmake { path "CMakeLists.txt" } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:support-annotations:24.2.0' } 

在运行configuration中,debugging器被设置为auto

在这里输入图像说明


加法:

我在用着:

Gradle:2.2.3

Android Studio:2.2.3


在LLLB控制台中,我检查了断点列表:

断点列表-v

我所有的检查站都在那里列出。

不工作的断点

 1: file = 'C:\android-dev\...\test.cpp', line = 19, exact_match = 0 

..就这样

工作断点

 1: file = 'C:\android-dev\...\test.cpp', line = 19, exact_match = 0 1.1: module = C:\android-dev\...\test.so compile unit = gl_code.cpp function = testFunc(..) location = C:\android-dev\...\test.cpp:16 address = 0x0000007f871d068c resolved = true hit count = 1 

Solutions Collecting From Web of "debuggingC ++ /本机库模块不能与Android Studio一起使用(使用Cmake)"

原因似乎是,lib的发行版本被创build,不支持debugging。 即使应用程序是用debugging选项构build的。

解:

要解决此问题,请执行以下解决方法。 它确保生成一个debugging版本。


在您的应用程序build.gradle更改:

 compile project(':nativelib') 

 compile project(path: ':nativelib' , configuration: 'debug') 

在libs build.gradle中添加:

 android { publishNonDefault true //this line compileSdkVersion 24 buildToolsVersion "25.0.2" defaultConfig { ... } ... } 

更新:

请参阅相关谷歌问题的更新:

https://code.google.com/p/android/issues/detail?id=222276

几个月前,我和我自己的库有类似的问题,因为我认为,如果我添加了-g(gcc)标志,它将生成debugging符号,如桌面(Linux,Unix内核)应用程序。

但是,实际上它不能生成debugging符号。

我看到你使用Cmake作为外部构build工具和clang编译器。

所以在我的情况下,我使用gccconfiguration我的cmake脚本,但是没有使用gradle脚本,但是我认为它是一样的,我在CMAKE_CXX_FLAGS中添加了-mapcs-frame。

 externalNativeBuild { cmake { arguments "-DANDROID_PLATFORM_LEVEL=${11}", '-DANDROID_TOOLCHAIN=gcc', '-DANDROID_STL=gnustl_static', 'DCMAKE_CXX_FLAGS=-mapcs-frame' } } 

我知道,如果你使用铛编译可能是这个标志无法正常工作。 但我的想法是分享我的经验与Android本机debugging。

我希望这个线索可以帮助你。

干杯。
垂发。