android 调试器不会在断点处停止

Posted

技术标签:

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

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

【问题讨论】:

我的解决方案是重新安装 Eclipse。可能较弱的解决方案是:工作区清理(删除所有 eclipse 文件并从生成的项目中导入;清理项目,重新启动 Eclipse。 【参考方案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.

【讨论】:

你在哪里设置调试器超时值?我想我和你有同样的问题,因为调试器在我在物理设备上调试时会捕获每个断点,但在我在模拟器上调试时通常无法捕获我设置的第一个断点。 -莎拉

以上是关于android 调试器不会在断点处停止的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2010 C# 调试器不会在新断点处停止

颤振调试器不会在断点处停止

Eclipse - 调试器不会在断点处停止

调试远程节点服务器时,VScode 调试器不会在断点处停止

远程调试不会在断点处停止

调试器不会在 VS Code for Python 中的断点处停止