如何判断我是否在 Android 调试器中?

11

我需要一种方式来检查我的Android应用程序是否正在进行调试(在启动时我们会检查特定条件, 但当调试器运行时我明确不想要检查)。是否存在这样的方法?


找到了 - android.os.Debug有我可以用来解决这个问题的方法。 - D Garcia
2个回答

24

你需要查看isDebuggerConnected方法。

但是,将你的应用程序行为与调试器连接的状态相关联被认为是一种非常糟糕的做法。这可能导致一些难以捕获的 bug。所以要小心。


1
这是专门为了在应用程序严重崩溃(例如,在adb中使用kill -9命令)时进行一些清理工作而设计的——由于当您启动调试器时,应用程序会不正常地死亡(它会杀死旧的应用程序运行并启动一个新的进行调试),因此我想阻止发布有关错误退出的通知,因为我认为这只会使尝试调试的开发人员感到恼怒。 - D Garcia
1
小型应用程序在调试器下的行为可能会有所不同。在我的情况下,当我在调试时请求来自 HTTP 调用的“漂亮格式化”的 XML 资源,并且在其他情况下则是压缩的。 - Pointer Null
2
我在单元测试中使用它,当调试器连接时增加超时值。这样,即使由于断点而增加了执行时间,测试也可以通过。 - bma350

0
我可以使用android.os.Debug的isDebuggerConnected和waitingForDebugger方法来捕获这个状态。

此外,它还有一个有用的提示,即存在 waitingForDebugger 方法,用于在调试器连接之前运行代码。当在并发线程情况下调试测试用例以定义超时时,所有这些都非常方便。 - zsawyer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接