NetBeans中的调试器输出

问题描述

我想从Visual Studio(C#)更改为NetBeans(Java),但是下面描述的问题困扰我(调试器输出未在发生中断的用户代码显示行)。

(问题的更正版本)

我将Java与 NetBeans v8.2, Apache Tomcat v9(JSP)和 Postgresql v9.5(postgresql-42.2 .5.jar库),没有其他添加项,例如。 Spring框架,Maven等。在NetBeans中,我定义了断点,当发生异常时该断点应该自动附加,例如Visual Studio本身就是如此。在NetBeans中,您必须自己设置此类异常,方法是在Breakpoints窗口中指定一个异常类名称(如您所知)。这些已定义的异常中的大多数确实可以正确地停止执行,并在发生意外问题的地方显示代码行,并且您可以查看变量状态等(如您所知)。通常,对于大多数Java代码来说,定义Throwable(作为异常类名称)对我来说很好用,但是当Throwable不起作用时,我必须定义一些其他代码

enter image description here

上述异常工作正常,但 org.postgresql.util.PsqlException 不能(!)

((我在PsqlException上面使用了一些排除项-那些不希望破坏该异常的库:“ java。,sun。,javax。,com.sun。,jdk。,org.apache。,org.springframework。,org.eclipse。“-我只想在我的代码中打扰一下

下面我显示正在发生的事情。

我有一个Postgresql连接:

Connection conn = DriverManager.getConnection(
        cs.getPgUrlJdbc(),cs.getUser(),String.valueOf(cs.getpassword()));
Statement cmd = conn.createStatement();
// This is the step where error occurs because of bad schema name
ResultSet result = cmd.executeQuery(“select * from zinformation_schema.columns”);

上面的查询引用了一个不存在的表(实际上是模式)。当它出现时,IDE不会发出信号(系统托盘上的图标没有像手动设置断点时那样闪烁)。因此,您必须保持警惕,这本身就是一个问题(请不断检查IDE并查看是否发生了什么事?)。

(是的,IDE将与中断位置相对应的行涂成紫色,但是您必须自己浏览文件才能找到它。即使找到它,也看不到变量的状态。甚至然后手动插入一个断点,但这并不能改变您始终必须首先确定程序已停止并进行恼人的断点搜索这一事实。

以下输出显示 Debugger Console 窗口中:

异常org.postgresql.util.PsqlException(

可能没有被事件(断点,步骤等)挂起。>)中断http:// nio-8080-exec-156在org.postgresql.core.ResultHandlerBase中的63行命中了。 / em>

(没有被断点挂起!)再次重复了上述内容,然后:

线程http-nio-8080-exec-156在ResultHandlerBase.java:63处停止了。

当然,上面提到的文件都不是我的,而Postgresql是。 因此,我按下 Step (跳过),并且窗口 Debugger Console (调试器控制台)也显示

用户程序正在运行

异常org.postgresql.util.PsqlException(“错误:关系” zinformation_schema.columns“不存在*

位置:15“)断点在380.线程http-nio-8080-exec-156在org.postgresql.core.v3.QueryExecutorImpl中命中。

上面写过2次(照常),然后:

线程http-nio-8080-exec-156在QueryExecutorImpl.java:380处停止。

同样,在我的代码中,我没有关于问题根源的任何信息,它仅显示Postgresql库中正在发生的事情。 文字关系zinformation_schema.columns不存在”可能是我可以使用文件中查找找到的线索,但是如果表名是每次由用户给出或来自外部资源(来自文件数据库等)时,都需要对整个程序进行分析。

我第二次跳过

用户程序正在运行

线程http-nio-8080-exec-156在PgStatement.java:444处停止了。

有些新东西,但是我仍然不知道我的代码中需要改进的地方,并且我逐渐感到沮丧。

Apache Tomcat或TomEE日志 Apache Tomcat或TomEE 控制台保持沉。 进一步推动 Step 不会带来任何新变化,除了消息在每次移动(可能无关紧要?)时在PgStatement.java文件(Postgresql的库)中显示不同的行号:

用户程序正在运行

线程http-nio-8080-exec-156在PgStatement.java:444处停止了。

用户程序正在运行

线程http-nio-8080-exec-156在PgStatement.java:366处停止了。

用户程序正在运行

线程http-nio-8080-exec-156在PgStatement.java:368处停止了。

用户程序正在运行

线程http-nio-8080-exec-156在PgStatement.java:369处停止了。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)