【问题标题】:android debugger does not stop at breakpointsandroid 调试器不会在断点处停止
【发布时间】:2011-07-14 16:27:04
【问题描述】:

我在控制台中看到调试语句,但调试器不会在任何断点处停止。我尝试清除所有断点并将它们重新添加。不知道这是怎么发生的,但确实如此。

【问题讨论】:

  • 我的解决方案是重新安装 Eclipse。可能较弱的解决方案是:工作区清理(删除所有 eclipse 文件并从生成的项目中导入;清理项目,重新启动 Eclipse。

标签: android eclipse android-studio debugging


【解决方案1】:

对我有用的解决方案:

  • 只需从设备卸载应用在设备上手动)并再次尝试调试(! )

【讨论】:

  • 没有比这更容易的了 =)
  • 谢谢!工作得很好!
  • 没错!在新手机上,我尝试过运行然后调试。之后断点停止工作。从手机卸载应用程序并重新运行调试模式后,断点再次开始工作
  • 我终于找到了使用 Android Studio 解决我最糟糕的噩梦的终极解决方案!
  • 我已经使用 Android Studio 多年了,从来没有这样做过。不知道发生了什么变化,但我只是尝试卸载它并且它有效!谢谢!
【解决方案2】:

如果你使用Android studio,点击debug app而不是run app

【讨论】:

  • 傻我! +1。这应该是公认的答案。 Android Studio 警告您不要将android:debuggable="true" 放入已接受答案中建议的应用程序清单中。
【解决方案3】:

根据this answer,在您的应用模块内部build.gradle,为您的构建变体禁用minifyEnable并将其更改为false。那么,应该是:

minifyEnabled false

否则,当您将鼠标悬停在断点标记上时,您将看到 Line number not available in class xxxx,并且它们将被查看并带有一个叉号

【讨论】:

  • 我会补充一点,我在悬停断点时没有看到提到的消息。非工作断点缺少一个小复选标记,基本上将它们保留为纯红色圆圈,而工作断点有这个复选标记。
【解决方案4】:

您是否在 AndroidManifest 中设置了 debuggable 标志? 如果您错过了,请在应用程序标签中添加 android:debuggable="true"。 最后应该是这样的:

<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">

【讨论】:

  • 在我的情况下它不会有帮助:-(
  • @Wooff 您应该将其作为单独的答案发布。 :)
  • @Wooff 好像我的开发文件夹中没有足够的文件。你是说我需要另一个“调试”文件夹。我认为 Linux 会是一个更易于维护的解决方案。
  • Android Studio 不再支持此标志。
  • @BhunnuBaba 是的,正在重新安装 Eclipse。较弱的解决方案是:工作区清理(删除所有 eclipse 文件并从生成的项目中导入;清理项目,重新启动 Eclipse。
【解决方案5】:

在我的例子中,点击“将调试器附加到 Android 进程”

它会显示一个窗口,上面写着“选择进程” 选择您正在使用的设备,然后选择您要调试的项目。它有效。

有时调试器需要在您第一次打开调试器时重新附加到设备。

【讨论】:

    【解决方案6】:

    对于 Android Studio:

    • 检查是否错误地启用了选项Mute Breakpoints。图标如下所示:

    对于 Eclipse:

    • 检查“跳过所有断点”选项是否被错误地启用。它是以下工具栏上的最后一个图标

    【讨论】:

    • 在android studio中哪里可以找到这个选项?
    • 在 Android Studio 中,“静音断点”选项存在于调试视图中。检查我编辑的答案。
    【解决方案7】:

    您是否使用“Debug As --> Android Application”而不是“Run As”?

    只有当你执行“Debug As”时,eclipse才会在断点处停止。

    【讨论】:

      【解决方案8】:

      我遇到了同样的问题。 转到 build.gradle。 如果您有此代码,则必须更改此代码。

      构建类型 { 发布 { 缩小启用真 收缩资源真 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' }

          debug {
              debuggable true
              minifyEnabled true
              shrinkResources true
              proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
      

      'proguard-rules.pro' } }

      调试部分应如下所示:

      构建类型 { 发布 { 缩小启用假 收缩资源假 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' }

          debug {
              debuggable true
              minifyEnabled false
              shrinkResources false
              proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
      

      'proguard-rules.pro' } }

      希望你的问题得到解决

      【讨论】:

        【解决方案9】:

        如果您在build.gradle 中添加了一些build type,请检查是否有debuggable true

        buildTypes {
            debug {
                debuggable true
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            } 
        
            release {
                minifyEnabled true
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            }
        }
        

        【讨论】:

        • 我没有调试配置,但添加一个像上面这样解决了我的问题。
        【解决方案10】:

        在我的例子中,该应用在 AndroidManifest 中使用 android:process=":service" 创建了一个具有不同进程的服务。因此,当调试器自动附加到主应用程序进程时,我在服务进程代码中设置断点。我很愚蠢,但它可能会帮助其他人。

        您使用Run &gt; Attach Debugger To Android Process 附加到服务进程并选择服务进程。如果您无法及时手动附加,您可能需要将android.os.Debug.waitForDebugger(); 添加到您的服务流程代码中。

        据我所知,没有办法在运行前自动告诉 Android Studio 或 IntelliJ 附加到不同的进程。

        【讨论】:

          【解决方案11】:

          我遇到了这个问题,我清理了 build.gradle 的 buildTypes 部分 并尝试年龄,所以它对我有用。

          【讨论】:

            【解决方案12】:

            我遇到了同样的问题,并通过增加调试器超时值来解决它。 模拟器在我的开发盒上像狗一样慢,这就是阻止调试器在断点处捕获和停止的原因。 我将超时值分别从 3000 更改为 10000 和 20000 更改为 60000,现在一切都很好。

            V.

            【讨论】:

            • 你在哪里设置调试器超时值?我想我和你有同样的问题,因为调试器在我在物理设备上调试时会捕获每个断点,但在我在模拟器上调试时通常无法捕获我设置的第一个断点。 -莎拉
            猜你喜欢
            • 2023-03-12
            • 2015-06-30
            • 2010-11-25
            • 2013-09-27
            • 2015-07-17
            • 2015-02-08
            • 2017-11-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多