2

我在调试 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);
                }

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

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

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

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

4

1 回答 1

1

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

于 2013-05-14T13:46:54.040 回答