问题 Java应用程序是否可以检测到附加了调试器?


我知道(jvm)启动选项让jvm等到调试器连接 - 这不是我的意思。

是否可以从Java代码中检测调试器的附件,以便我可以例如写一个“脚本”,正在做一些东西,然后在某一点让我的应用程序等待调试器?


8286
2018-03-22 15:14


起源

看一下这个 stackoverflow.com/questions/25990147/... - Sergey Voitovich


答案:


不可以。选项是JVM选项,在调试器连接之前不会执行Javacode。然而,您可以让应用程序启动,并在getter上为变量启动,您可以从调试器设置该变量以继续使用您的应用程序。


8
2018-03-22 15:21



我知道那些是jvm选项(这就是我的第一个短语)。有趣的想法与变量;接近我想要的。 - Heiko Rupp
所以,没有 Debugger.IsAttached 对于Java? - 超级跛脚。 - BrainSlugs83
嗯,经过一些更多的搜索,似乎Android有一个 Debug.isDebuggerConnected()  - 太糟糕了,普通的Java没什么。 - BrainSlugs83
如果您只想知道当前JVM会话中是否启用了调试,那么您可以使用 ManagementFactory.getRuntimeMXBean().getInputArguments().contains("-Xdebug") - flungo


根据你想做的事情,可能值得调查一下 onthrow JDWP子选项。我实际上没有尝试过这个;-)但似乎你可以创建一个特殊的异常类型,你抛出并捕获以触发JVM暂停。如链接示例所示,结合使用 launch 可以提供一些有趣的替代品。当然,逻辑/工作流程与您所表达的不同,但它需要考虑......


2
2018-03-22 19:23





看到 确定Eclipse中的Java应用程序是否处于调试模式 用于检测调试器

您可以使用TimerTask轮询附件


0
2018-03-28 19:13