Java 在远程调试期间,是否有方法搜索堆栈中当前位置可用的变量?

Java 在远程调试期间,是否有方法搜索堆栈中当前位置可用的变量?,java,eclipse,debugging,Java,Eclipse,Debugging,我正在远程调试Java应用程序,并且(不是第一次)发现自己在寻找一个值,而不知道哪个变量可能包含它(如果有的话)。这是特别难以找到的,因为我正在逐步通过库代码而不是我自己的代码,所以我想知道;由于eclipse可以显示堆栈上当前可用的变量以及所有包含的值,有什么方法可以搜索这些变量吗?或者至少将其作为文本转储到某个地方,然后将其grep或其他内容。我不确定您要求的功能,但您可以采取另一种方法。假设您知道一般区域,并且您正在查找的对象不是很常见,eclipse支持条件断点,因此您可以在方法末尾设置

我正在远程调试Java应用程序,并且(不是第一次)发现自己在寻找一个值,而不知道哪个变量可能包含它(如果有的话)。这是特别难以找到的,因为我正在逐步通过库代码而不是我自己的代码,所以我想知道;由于eclipse可以显示堆栈上当前可用的变量以及所有包含的值,有什么方法可以搜索这些变量吗?或者至少将其作为文本转储到某个地方,然后将其grep或其他内容。

我不确定您要求的功能,但您可以采取另一种方法。假设您知道一般区域,并且您正在查找的对象不是很常见,eclipse支持条件断点,因此您可以在方法末尾设置断点,检查方法变量和对象状态。

您可以尝试。我还没有尝试过搜索功能,但它允许将堆栈上的所有变量展开并导出到一个文件中,然后您可以对文件中的值进行grep。我手动将最新版本安装到Eclipse中,即将jar放在dropins/plugins目录中。在Eclipse3.6.1上为我工作。

每当我发现自己需要在调试时捕获的一堆值中进行搜索时,我通常会使用的导出到JSON。在断点命中时,假设我想在myObj的文本表示中搜索某个字符串,该字符串可能是一些带有嵌套对象的混乱POJO深度。只需评估以下内容:

org.codehaus.jackson.map.ObjectMapper mapper = new org.codehaus.jackson.map.ObjectMapper();
mapper.writeValue(new java.io.File("/tmp/myObj.json"), myObj);
然后在刚刚创建的文件中grep你的值。
YMMV:如果你不知道从哪里开始搜索,你就必须遍历堆栈中可用的内容。此外,JSON表示可能不适合所有类型的搜索。

是的,我知道该功能,但我不知道它可能在什么变量中(而且大多数变量都有大量字段,包括要遍历的字段,如表、映射等),我看不出这有什么帮助似乎没有人有任何其他的建议。我想知道是否可以编写一个附加组件来实现这一点。无论如何,谢谢你。