首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Eclipse下调试本机代码

无法在Eclipse下调试本机代码
EN

Stack Overflow用户
提问于 2014-09-11 06:43:29
回答 1查看 376关注 0票数 1

环境:最新NDK + Eclipse + ADT + CDT。一切都是最新的。

当我尝试以本地方式调试我的Android应用程序时,我会得到以下错误:

代码语言:javascript
复制
 warning: Unable to find dynamic linker breakpoint function.
 GDB will retry eventurally.  Meanwhile, it is likely
 that GDB is unable to debug shared library initializers
 or resolve pending breakpoints after dlopen().

为了确保它不是我的特定应用程序,我创建了一个简单的虚拟应用程序。这是我所采取的步骤。

  1. 在Eclipse中,创建一个新的Android应用程序项目(使用min 16和target-sdk 21)
  2. 增加了一个类:

代码语言:javascript
复制
package com.test.mytest1;

public class MyNative {
    static {
        android.os.Debug.waitForDebugger();
        System.loadLibrary("mytest1");
    }
    native public static void init();
}

请注意,我添加了一行以等待调试器初始化。

  1. 从MainActivity的onCreate()方法调用onCreate()。
  2. 从preferences,固定NDK指向C:\adt\ndk目录。
  3. 在项目菜单中,选择Android工具-->添加本机支持。
  4. 从Properties->C++ Build,将build命令设置为"ndk-build NDK_DEBUG=1“
  5. 下面是mytest1.cpp中的代码:

代码语言:javascript
复制
static int x = 0;

JNIEXPORT void JNICALL Java_com_test_mytest1_MyNative_init(JNIEnv *, jclass)
{
    x++;
}
  1. 在jni目录中添加了Application.mk:

代码语言:javascript
复制
APP_ABI := armeabi-v7a 
APP_PLATFORM := android-16

现在,当我尝试将应用程序作为本地应用程序运行时,上面提到的消息失败了。

当我查看apk文件时,lib/armeabi-v7a确实包含gdbserver和libmytest1.so文件。

这个应用程序确实能工作。如果我在本机方法中添加了log()语句,它就会在LogCat中显示。

我又困惑又累。一件简单的事情,像这样的事情,应该只是起作用。想知道你是否可以分享你所做的不同的事情来使它发挥作用。致以问候。

EN

回答 1

Stack Overflow用户

发布于 2014-12-19 08:31:43

  1. android.os.Debug.waitForDebugger()用于JAVA调试。
  2. 要调试本机代码,在第一个断点之前添加睡眠(秒),gdb必须连接gdbserver Java_com_test_mytest1_MyNative_init(JNIEnv *,jclass) {睡眠(10);x++;}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25780799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档