有没有办法在远程调试期间搜索堆栈中当前位置的可用变量?

时间:2011-10-25 14:25:47

标签: java eclipse debugging

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

3 个答案:

答案 0 :(得分:1)

我不确定您要求的功能,但您可以采取另一种方法。假设您知道一般区域和您正在寻找的对象不太常见,eclipse支持条件断点,因此您可以在方法结束时设置断点来解决方法变量和对象状态。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

每当我发现自己陷入必须在调试时捕获的一堆值中搜索时,我通常会使用JacksonObjectMapper导出到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表示可能不适合所有类型的搜索。