android - 无法使用 Android Studio 和 ndkBuild 在 C++ 中到达断点

标签 android c++ android-studio

我试图在一个简单的 C++ 代码中到达一个断点:

这里是.cpp

#include <jni.h>
#include <string>

extern "C"
{

jstring Java_com_comscore_android_app_MainActivity_stringFromJNI(
        JNIEnv* env,
        jobject /* this */) {
    std::string hello = "Hello from C++ lalalaaaaaa";
    return env->NewStringUTF(hello.c_str());
}
}

这里是 gradle 文件:

android {
    compileSdkVersion 23
    buildToolsVersion "24.0.1"
    defaultConfig {
        applicationId "com.comscore"
        minSdkVersion 10
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            ndkBuild {
                arguments "NDK_APPLICATION_MK:=src/main/jni/Application.mk"
            }
        }
    }
    externalNativeBuild{
        ndkBuild{
            path "src/main/jni/Android.mk"
        }
    }
...
}

Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES := native-lib.cpp
LOCAL_MODULE    := native-lib


LOCAL_LDLIBS := -llog

LOCAL_CPPFLAGS += -fsigned-char -fexceptions -frtti -g -O0 -std=c++0x -std=gnu++0x 
LOCAL_CFLAGS += -fsigned-char -fexceptions -frtti -g -O0 -std=c++0x -std=gnu++0x 

include $(BUILD_SHARED_LIBRARY)

和Application.mk

APP_ABI := all
APP_STL := gnustl_static

应用程序编译并运行,但在运行调试器时我无法在 C++ 代码中的任何断点处停止。我可以看到它是如何加载 native 库的,但它不会在任何地方停止,Android Studio 告诉我断点已附加。

我正在使用 Android Studio 2.2 预览版 6

谁能帮帮我?

最佳答案

在我的例子中,我有两个模块,一个包含 C++ 代码(库),另一个包含使用库模块的应用程序。

问题是我试图通过应用程序模块调试库模块,所以我只需要指定调试符号所在的文件夹:

Run->Edit configurations...->Debuggerand 在符号目录选项卡中添加正确的路径。例如:

/path_to_my_project/lib_module/build/intermediates/ndkBuild/flavor/debug/obj/local/x86

enter image description here

关于android - 无法使用 Android Studio 和 ndkBuild 在 C++ 中到达断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38582795/

相关文章:

android - 在android代码中向 ImageView 添加进度条

java - java中如何去除Arraylist中的重复元素

c++ - 在 C++ 中,是否可以直接从另一个数组初始化一个数组?

c++ - 如何找出变量的类型,涉及继承/多态性

android - 无法使用android模拟器打开React Native项目

android - 无法在 Windows 8 64 位下安装 Android Studio

android - RelativeLayout 占用的空间比需要的多

java - Android WebView 与 Javascript 调用行为异常

c++ - std::ifstream::在 eclipse 上打开错误

android - 如何在 Android Studio 项目中使用最新的 FFMPEG?