[编辑:让我改述一下]假设o
在调试中出现的对象具有属性a
和b
,具有值null
和Hello
。是否可以为下一个调试会话自动生成以下代码:
if(o.a == null && o.b == "Hello") {
}
在调试一个必须处理复杂用户输入的程序时,例如编程语言的解析器,我经常想从解析过程中的某个点开始调试。当处理来自特定输入代码行的指令时,我实现了一种简单的启动方式。
但是,行可能包含非常复杂的指令,导致代码中的深度递归,因此在开始调试后,我必须手动深入程序。当这种情况发生在函数func(obj a)
中时,我通常会写一些像这样的丑陋代码:
public void func(obj a) {
if(a instanceof someClass && ((someClass)a).hasSomeProperty() && ((someClass)a).getIdentifier().equals("myID")) {
// set a breakpoint here
}
// other code
}
所以基本上我尝试通过识别传递给函数的对象来识别有趣的情况。我知道这些值,因为我通常在其他代码中引发的异常上设置断点。所以我的问题是:不是编写所有这些丑陋的代码来生成正确的断点,有没有办法根据变量在以前的调试会话中的某个值来配置条件断点?基本上说:当对象与此处的对象完全一样时,请在此处停止?