为什么调试器在尝试使用android模拟器和eclipse进行调试时没有附加?

时间:2011-12-15 22:09:39

标签: android eclipse debugging ddms

我无法在我的模拟器上调试我的任何应用程序,它们都挂在“应用程序......正在等待调试器附加。这不是问题之前。我已经尝试调试我编程的应用程序几个月前,甚至那些都没有附加到调试器。

我已经四处寻找并找到了解决此问题的常用解决方案,例如: 使用权限“android.permission.SET_DEBUG_APP” 并在此问题中找到应用程序标签android:debuggable =“true” Attaching debugger - android problem但在检查后,发现我的应用已经设置了这些设置。

我还确保在设置>应用程序>开发下检查'USB调试'设置。我也经常检查eclipse的新更新。 我想我在日食更新后开始遇到这个问题。有没有人找到解决这个问题的方法? 我一直在研究一个非常酷的应用程序并且能够创建UI,但是真的需要能够进行调试,因为我将实现我之前没有的事情,并且没有调试会成为主要的后退并让我放慢速度。

3 个答案:

答案 0 :(得分:2)

自从Android工具15以来,我最近遇到了这个问题。我发现的解决方法是在启动eclipse之前隐藏模拟器。然后它似乎工作正常。

答案 1 :(得分:0)

根据android的消息来源,os会在无限循环中坐下并旋转,直到调试器空闲时间足够长。你可以通过按下暂停调试按钮强制调试器空闲,等待1.5秒并按下恢复。之后调试器应该附加。

    /*
     * There is no "ready to go" signal from the debugger, and we're
     * not allowed to suspend ourselves -- the debugger expects us to
     * be running happily, and gets confused if we aren't.  We need to
     * allow the debugger a chance to set breakpoints before we start
     * running again.
     *
     * Sit and spin until the debugger has been idle for a short while.
     */
    while (true) {
        long delta = VMDebug.lastDebuggerActivity();
        if (delta < 0) {
            System.out.println("debugger detached?");
            break;
        }

        if (delta < MIN_DEBUGGER_IDLE) {
            System.out.println("waiting for debugger to settle...");
            try { Thread.sleep(SPIN_DELAY); }
            catch (InterruptedException ie) {}
        } else {
            System.out.println("debugger has settled (" + delta + ")");
            break;
        }
    }    

答案 2 :(得分:0)

尝试确保未显示“线程”窗格。正如@arcadoss所说,调试器需要空闲一段时间,并且线程窗格会不断刷新其视图中的线程。