我在应用程序中遇到了一些奇怪的文本格式,我需要找到原因。问题是我不知道从哪里开始查看我们的Legacy代码。
是否可以让IntelliJ IDEA调试器在JVM中的整个应用程序实例中搜索值?与通常使用条件设置断点的方法相反。
答案 0 :(得分:1)
从对this question的评论来看,IntelliJ中没有这样的功能。
但是,您可以尝试执行堆转储,然后使用OQL进行搜索。它可以在与JDK捆绑在一起的VisualVM工具中完成:
jvisualvm
命令(假设您bin
中有JDK的PATH
文件夹。)前往 OQL控制台视图。在查询编辑器中,键入您的查询,例如:
select s from java.lang.String s where s.toString().contains("hello")
并执行它。
这可以让你更接近你的对象使用的类/对象。
有一些棘手的部分:
堆转储分析的另一个工具是Eclipse Memory Analyzer (MAT)。 (对于您的用例,在分析堆转储之前启用 Keep unreachable objects 选项。)
您提到需要在运行时搜索该值。但是,如果您怀疑要查找的是字符串文字,请尝试按照this answer中的说明搜索应用程序的JAR。