有没有办法在JVM中有选择地调试单个应用程序(或几个应用程序)?

时间:2011-08-03 10:33:02

标签: java debugging java-ee jvm

当我在调试模式下启动JVM时,事情自然会变慢。

有没有办法说明我只对调试单个应用程序感兴趣,而不是在这个JVM上运行的15个应用程序(在这里组成一个数字)。

促进这种做法的方法可能会使事情变得更快,特别是当我们已经从日志和其他跟踪设施知道单个应用程序可能存在的问题时

欣赏想法和评论

由于 Manglu

1 个答案:

答案 0 :(得分:2)

我将在这里做出很多假设,特别是因为你的问题缺少很多背景信息。

  

有没有办法说明我只对调试单个应用程序感兴趣,而不是在这个JVM上运行的15个应用程序(在这里组成一个数字)。

首先,我假设您正在尝试在生产中执行此操作。如果是这样,退一步思考可能出现的问题。您可能正在放置一个断点,但这将排队到达该断点的所有请求,并且这样做会将任何SLA要求抛出窗口。而且,如果您的应用程序处理任何敏感数据,您必须看到一些您不应该看到的内容。

其次,即使您在共享开发或测试环境中执行此操作,这也是一个坏主意。特别是如果不确定你在寻找什么。如果你正在寻找同步错误,那么这可能是错误的方法;其他线程显然会共享您正在阅读的数据,并使其不太可能找到罪魁祸首。

最好的替代方法是在应用程序中打开跟踪日志记录。除非您在应用程序中嵌入了适当的记录器调用(特别是跟踪方法参数和返回值),否则这将是无用的。使用跟踪日志,您应该能够创建集成或单元测试,以重现本地开发人员安装的确切故障条件;这是你应该在做调试的地方。有时,即使是功能测试也足够了。

一般来说,没有更快的方法,因为它根本不适用于所有情况。您可以在任何其他环境中建立选定数量的断点,但它不值得麻烦,除非您知道调试对象进程只拦截了您的请求。