当前位置: 首页 > 面试题库 >

如何确定是否启用了“调试模式”

冉锋
2023-03-14
问题内容

Java程序如何找出它是否在调试模式下运行?

在常规的“全速”模式下,应用程序的行为应与“调试模式”下(在连接调试器时,在调试模式下运行)的行为有所不同。该应用程序通过TCP与另一台计算机,另一进程或自身内部进行通信。我的同事希望我们Socket.setSoTimeout(1000)默认使用,以便从套接字读取最多可以阻塞1秒钟。调试时,这当然是不够的,并且应用程序将停止正常运行。因此,一种解决方案是设置SO_TIMEOUT较高的值,但仅在调试模式下使用(例如:无限制)。现在,我并不总是设置断点,也不希望使用可以自行设置“
debug”属性的调试版本。有时我会连接调试器(远程调试)。我主要使用Eclipse,因此可以在其中正常使用的解决方案。

可能的答案包括:

  1. 要了解是否以调试模式运行,请在java.lang.management.*javax.management.*…中使用以下方法。

  2. 您的同事由于X原因而错了SO_TIMEOUT,默认情况下您不应将其设置为1秒。

更新资料

我了解系统属性方法,但是我有待解决最初的问题。


问题答案:

我现在自己发现了:

boolean isDebug = java.lang.management.ManagementFactory.getRuntimeMXBean().
    getInputArguments().toString().indexOf("jdwp") >= 0;

这将检查是否使用了Java调试线协议代理。



 类似资料:
  • 我想知道是否有一种方法可以确定在数据库上启用了PostGis。 我试图用我的开发机器复制我的正式服,我不确定我的开发机器上的数据库是否启用了PostGIS或postgis_topology或两者兼而有之。 我试着四处寻找解决方案,但什么也想不出。 这方面的任何建议都会有帮助。

  • 问题内容: 我想更改日志记录级别,具体取决于是否在进行调试,但是我找不到代码片段来检查应用程序是否在调试模式下运行。 我正在使用eclipse调试应用程序,因此,如果该解决方案仅在Eclipse中有效,则可以。 问题答案: 您可以修改调试配置。例如,仅在“调试配置”中添加特殊的VM参数。您可以用来读取提供的参数。 更好的是,修改配置(运行和调试)以加载不同的日志记录配置文件。如果需要编写代码来确定

  • 问题内容: 我正在使用以下代码 这可以启用或禁用它 但我想作为函数说函数名是 那么我可以按照我的网站代码中的任意位置来称呼它 与我先前的问题几乎相同,请检查是否启用了allow_url_fopen 问题答案: 只需从函数中返回现有支票即可。

  • 问题内容: 我最喜欢的Linux工具之一是lsof-真正的瑞士军刀! 今天,我发现自己想知道WinXP系统上的哪些程序打开了特定文件。有与lsof等效的工具吗?此外,有问题的文件是通过网络共享进行的,因此我不确定是否会使问题复杂化。 问题答案: 使用Sysinternals Suite中的Process Explorer,Find Handle或DLL函数将让您搜索打开该文件的过程。

  • 我从Google Play Store下载了一些Android APK文件(有1个、有2个和手动),但没有得到关于proguard用法的确切提示。 有没有办法知道哪个Android APK文件在反向工程代码中使用了proguard? 在APK文件的一些代码中,类名类似于a、b、c、d,它们的包名也是相同的。反编译后的代码结构非常复杂,不易理解。 一些APK文件具有易于格式化的代码。它们的反编译代码

  • 问题内容: 我一直在做一些关于CoreLocation的研究。最近,我遇到了一个问题,该问题已在其他地方解决,但在Objective C和iOS 8中已涵盖。 我觉得这有点愚蠢,但是如何在iOS 9上检查是否使用swift启用了定位服务? 在iOS 7(甚至可能是8?)上,您可以使用,但是在为iOS 9编译时似乎无法正常工作。 那我该怎么做呢? 谢谢! 问题答案: 将添加到您的类继承中,然后可以进