Background: Animating LARGE coredumps with Visual Cobol is very slow (compared to Server Express). The two new animator options FASTLOAD and FASTEXIT have brought some improvements, but it is still 5 times slower than before.
Tests have shown, that canceling unnecessary subroutines (those not in the call stack) will solve the problem. animator got blazingly fast. But while I can easily find out, which subroutines are in the call stack (by using CBL_GET_PROGRAM_INFO) I don't know, how to get the loaded subroutines Only idea for know: cancel every module in COBPATH.
I do not know of any function in the COBOL runtime that can help you here.
The best solution I can think of is to create a custom CTF emitter and use it to monitor the "program load"/"unload" events.
It is not an ideal solution, as it does have an impact on the overall performance of the application.
I do not know of any function in the COBOL runtime that can help you here.
The best solution I can think of is to create a custom CTF emitter and use it to monitor the "program load"/"unload" events.
It is not an ideal solution, as it does have an impact on the overall performance of the application.
The idea to >>monitor the "program load"/"unload" << showed me a possible solution:
In AIX exists a function "queryload". It can give all loaded modules. Stripping away path and extension gives the cobol names that can be canceled. This dramatically speeds up the animation of large core-files (> 4000 subroutines). Active modules (those on the call stack, use CBL_GET_PROGRAM_INFO) will not be canceled.
Interesting: Getting the address of an subroutine >>set PPTR to ENTRY "sub"<< does not involve the OS. So there must also be an cobol internal subroutine management, which seems to be a great secret.