我下载了适用于Linux和Android NDK的Android SDK bundle 。安装了ADT,我安装了CDT。
我创建了一个Android项目并添加了 native 支持(jni)。然后,我用Java代码编写了 native 函数,该函数以C++代码导出。在C++代码中,我定义了此函数。
Java代码:
static {
System.loadLibrary("test");
}
private native String get_text_from_cpp();
C++代码(h):
extern "C"{
JNIEXPORT jstring JNICALL Java_com_example_test_MainActivity_get_1text_1from_1cpp(JNIEnv *, jobject);
}
C++代码(cpp):
JNIEXPORT jstring JNICALL Java_com_example_test_MainActivity_get_1text_1from_1cpp(JNIEnv * env, jobject){
return env->NewStringUTF( "hello from C++" );
}
代码可以正常工作。但是,当我在C++代码中设置断点时,它没有被击中。
build-nkd NDK_DEBUG = 1-包括在内
我遵循了此说明http://tools.android.com/recent/usingthendkplugin
jni/中的Android.mk具有LOCAL_CFLAGS:= -g
我已经阅读了很多信息,但是无法自定义Eclipse。请帮助任何人。
PS:很抱歉我的英语不是我的母语。我在写作上有困难。
添加:同样在控制台调试期间显示:
“警告:无法加载95个库的共享库符号,例如/system/bin/linker。
使用“info sharedlibrary”命令查看完整列表。
您是否需要“设置solib-search-path”或“设置sysroot”?
警告:找不到动态链接器断点功能。
GDB最终将重试。同时,很可能
GDB无法调试共享库初始化程序
或在dlopen()之后解决挂起的断点。”
最佳答案
我使用的技巧是将usleep调用作为调试代码中的第一个 native 行。
这使您的线程进入休眠状态,并使调试器有机会为您做好准备。
#include <unistd.h>
.
.
.
#ifndef NDEBUG
usleep(5000 * 1000);
#endif
关于android - 在Eclipse中调试Android NDK C/C++代码-断点未命中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17705109/