【问题标题】:plsql remote debug breakpoints not workingplsql远程调试断点不起作用
【发布时间】:2013-05-06 00:27:47
【问题描述】:

我在调试 pl sql 代码时遇到了一个奇怪的情况。

我将 sql developer 设置为侦听调试连接。在 java 代码中,我使用以下代码附加调试器:

CallableStatement cstmt = null;
                try {
                    cstmt = getConnection().prepareCall("begin DBMS_DEBUG_JDWP.CONNECT_TCP( '10.1.1.17', 4000); end;");
                    cstmt.execute();
                } catch (SQLException e) {
                    e.printStackTrace();
                } finally {
                    closeStatement(cstmt);
                }

调试器连接成功,即我可以在Run Manager的sql developer中看到该连接存在。

尽管创建了连接,但调试器不起作用。有时断点没有打上绿色标记,有时是,但断点仍然不起作用。在任何情况下,调试器都不会在中断时停止,调用的过程会成功执行,就像没有中断一样。

我放置中断的包被编译用于调试,Start Debugger Option 设置为Step Over。我还尝试Sql Developer 3.2.2 和 3.0.6, 3.0.4 具有相同的行为。我在“Sql Developer”和应用程序中使用的用户是相同的,并且该用户具有调试权限(DEBUG CONNECT SESSIONDEBUG ANY PROCEDURE)。我已经没有如何让它发挥作用的想法了。

接下来要尝试什么,如何诊断这个问题?

【问题讨论】:

  • 会话是否开启了 PL/SQL 调试? ALTER SESSION SET PLSQL_DEBUG=TRUE
  • 您在使用 RAC 吗?如果是这样,您需要连接到特定节点。
  • @Brian,这没有任何效果。我找到了根本问题并将添加评论。
  • @jonearles,好点,但我使用相同的节点。我发现了根本问题。它与 oracle 无关,它与应用程序服务器和与数据库的连接有关。我在一个 bean 中附加调试器并在另一个 bean 中调用 plsql 过程。由于他们在同一个事务中,我认为应该共享连接,但事实并非如此。所以我只是将调试器附件移到调用程序的 bean 上,现在它可以正常工作了。
  • @michaelnesterenko 请将评论移至答案:)

标签: java oracle plsql remote-debugging oracle-sqldeveloper


【解决方案1】:

我发现了根本问题。它与 oracle 无关,它与应用程序服务器和与数据库的连接有关。我在一个 bean 中附加调试器并在另一个 bean 中调用 plsql 过程。因为他们在同一个事务中,我认为应该共享连接,但事实并非如此。所以我只是将调试器附件移到调用程序的 bean 上,现在它可以正常工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-29
    • 2012-08-28
    • 1970-01-01
    • 2014-02-05
    • 2015-04-05
    • 2014-01-01
    • 2018-07-26
    • 1970-01-01
    相关资源
    最近更新 更多