Discussions
Categories
- 196.8K All Categories
- 2.2K Data
- 238 Big Data Appliance
- 1.9K Data Science
- 450.2K Databases
- 221.7K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 550 MySQL Community Space
- 478 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3K ORDS, SODA & JSON in the Database
- 544 SQLcl
- 4K SQL Developer Data Modeler
- 187K SQL & PL/SQL
- 21.3K SQL Developer
- 295.8K Development
- 17 Developer Projects
- 138 Programming Languages
- 292.5K Development Tools
- 107 DevOps
- 3.1K QA/Testing
- 646K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 154 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.1K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 18 Java Essentials
- 160 Java 8 Questions
- 86K Java Programming
- 80 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 204 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 437 LiveLabs
- 38 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 171 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 232 Portuguese
Oracle Debugger (DBMS_DEBUG_JDWP and DBMS_DEBUG) does not work with large Packages?

When debugging very large packages (> 4000 lines of code), the debugger is not able to step into them and instead hangs. The reason is that there are only partial debug informations aviable. Is there any workround for that issue (change size of packages is not an option!)?
Answers
-
There's no limit.
The reason is that there are only partial debug informations aviable.
Not sure what this means.
Are you getting error messages?
-
It is the following problem:
key word "DEBUG SYMBOL TABLE"
Error code: PLW-05015
Description: implementation restriction - too many debug records
Cause: The program is so large that it overflowed a compiler limit on the size of the debug symbol table. The module was compiled with partial debugging information.
Action: Compile the module with PLSQL_DEBUG=FALSE, or split it into multiple modules
But splitting packages is not an option for us. Too many dependencies.
-
Cool, that's a new one for me.
The only workaround's are
- don't use the debugger, use logging tables or dbms_output
- do exactly what you don't want to do, modularize further...break your code into smaller pieces. If you say you can't, and you have to have the debugger, it seems you've built something so large, it's not possible for you to support it any longer as a developer, and that's a bigger problem, right?
-
The limit is at about 2000 lines of code. Not really large in my opinion. But we have packages with more than 8000 lines of code.
-
I don't think there's a relationship to 'lines of code'
limit on the size of the debug symbol table
I could create a 2500 line program of nothing but dbms_output and null; calls, and it would debug just fine, I'm guessing.
-
You are right, complexity is more important. But it is not possible to count the number of debug records. What would be very usefull is a indicator for packages which have too many debug records. For those, the compiler should only compile the package specification (if not too large) and the debugger should not try to step into the body (in order to see global variables in the debugger). In current implementation, debugger steps into the body and through initialization of global variables, but hangs when stepping into first function/procedure.
-
I like the idea. I would submit an ER to the Database and PL/SQL teams through your My Oracle Support account portal.
-
Thanks a lot! Would be great to have such an improvement.
-
What would be very usefull is a indicator for packages which have too many debug records.
Wouldn't the following query help?
select owner, name, type, text from dba_errors where attribute = 'WARNING' and message_number = 5015
My 2 cents...
Regards,
[EDIT:] That's assuming that WARNINGS were enabled at compile time, of course.