![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
The Question is: Compiler Versions: BASIC V1.1 through V1.5 OpenVMS Versions: Alpha V6 through V7.3 When a program run ends with an unexpected run time error, the line number listed as the source of the error almost never matches the correct line number of the offending code. In over 20 years that I have used different versions of DEC/Compaq/HP Basic, I never had this problem under VAX VMS, but this problem always occurs under Alpha OpenVMS. As a result, de-bugging programs for run-time errors takes much more time now under Alpha OpenVMS than previously under VAX VMS. Is this a known problem, and is there a workaround? Or, is there something I am over-looking? Thanks, Balu The Answer is : The OpenVMS Wizard will assume you are refering to the application image's program counter line numbers; to OpenVMS virtual addresses, and not to the BASIC compiler's line numbers. To locate the failing instruction given the program counter (virtual) address, you will need both the application source code listings from the compiler(s) involved (with the machine code listings enabled), and you will need the linker map. When provided with a failing program counter, first locate the failing address within the ranges listed in the linker map. From the linker map, you will have the source module and program section that contributed the failing code, and the base virtual address for the code. Using the base virtual address and the machine code from the compiler listings, you can locate the offset within the routine, which will lead you to the failing instruction. You will want to look at use of the OpenVMS debugger, as this and similar tools can be used to debug the application, to locate the failing instructions, and even to automatically issue debugger commands upon program failures. This technique is used on both OpenVMS VAX and OpenVMS Alpha. For additional programming information and pointers to information on debugging applications, please see topics (1661) and related.
|