gpt4 book ai didi

java - netbeans 调试最佳实践

转载 作者:行者123 更新时间:2023-11-29 08:02:46 25 4
gpt4 key购买 nike

[编辑:让我重新措辞]假设调试中出现的对象 o 具有属性 ab,值为 nullHello 。是否可以为下一个调试 session 自动生成以下代码:

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
}

所以基本上我尝试通过识别传递给函数的对象来识别有趣的情况。我知道这些值,因为我通常在其他代码中抛出的异常上设置断点。所以我的问题是:不是编写所有这些丑陋的代码来生成适当的断点,有没有一种方法可以根据变量在以前的调试 session 中具有的某些值来配置条件断点?基本上说:当对象与此处的对象完全相同时,在此停止?

最佳答案

您可能会执行以下操作:编写一个静态实用方法(“writer”)来序列化并写入您想要与 future 调试 session 进行比较的对象;另一个方法(“reader”)接收一个对象并将其与序列化版本进行比较,当两者相等时返回 true。
之后,您可以定义一个或多个条件断点,这些断点会调用“writer”方法并且不会停止。
此外,您将定义另一个调用“reader”方法的条件断点,它会像往常一样暂停线程,但仅在满足条件时才暂停。

关于java - netbeans 调试最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13418095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com