我正在远程调试 Java 应用程序(这不是第一次),我发现自己正在寻找一个值,但不知道哪个变量可能保存该值(如果有的话)。这是特别难找到的,因为我正在逐步浏览库代码而不是我自己的代码,所以我想知道;由于 Eclipse 可以显示堆栈上当前可用的变量以及所有包含的值,有什么方法可以搜索这些变量吗?或者至少将其作为文本转储到某个地方并 grep 或其他东西。
最佳答案
我通常使用 Jackson 导出到 JSON的ObjectMapper每当我发现自己陷入必须在调试时捕获的一堆值中进行搜索的情况时。在断点命中时,假设我想在 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 表示形式可能并不适合所有类型的搜索。
关于java - 有没有办法在远程调试期间搜索堆栈中当前位置可用的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7890821/