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 > Attach Debugger To Android Process
附加到服务进程并选择服务进程。如果您无法及时手动附加,您可能需要将android.os.Debug.waitForDebugger();
添加到您的服务流程代码中。
据我所知,没有办法在运行前自动告诉 Android Studio 或 IntelliJ 附加到不同的进程。
【讨论】:
【参考方案11】:我遇到了这个问题,我清理了 build.gradle 的 buildTypes 部分 并尝试年龄,所以它对我有用。
【讨论】:
【参考方案12】:我遇到了同样的问题,并通过增加调试器超时值来解决它。 模拟器在我的开发盒上像狗一样慢,这就是阻止调试器在断点处捕获和停止的原因。 我将超时值分别从 3000 更改为 10000 和 20000 更改为 60000,现在一切都很好。
V.
【讨论】:
你在哪里设置调试器超时值?我想我和你有同样的问题,因为调试器在我在物理设备上调试时会捕获每个断点,但在我在模拟器上调试时通常无法捕获我设置的第一个断点。 -莎拉以上是关于android 调试器不会在断点处停止的主要内容,如果未能解决你的问题,请参考以下文章