为OpenVMS调试Alpha BASIC

时间:2017-09-06 08:02:06

标签: debugging basic openvms

我正在尝试接管涉及DEC BASIC,A.K.A的一些项目。 VAX BASIC,A.K.A。 Alpha BASIC。我真的希望遇到有经验的人。我已经阅读了VAX / Alpha BASIC的用户手册,但我无法弄清楚如何调试可共享的代码。

我可以创建,编译和链接可共享代码,我可以调试引用可共享代码的代码,但我无法调试可共享代码。任何帮助将不胜感激。

我用来编译和链接的命令是:

$ BASIC/DEBUG/NOOPTIMIZE COMPARE_DATES_TEST.BAS,COMPARE_DATES.BAS
$ LINK/SHAREABLE/DEBUG COMPARE_DATES.OBJ,COMPARE_DATES_SUB/OPT
$ LINK/DEBUG COMPARE_DATES_TEST,COMPARE_DATES_MAIN/OPT
$ RUN COMPARE_DATES_TEST

两个选项文件的内容是:

$ type COMPARE_DATES_SUB.OPT
! COMPARE_DATES_SUB.OPT
SYMBOL_VECTOR=(COMPARE_DATES=PROCEDURE)
$ type COMPARE_DATES_MAIN.OPT
! COMPARE_DATES_MAIN.OPT
COMPARE_DATES/SHAREABLE

我的可共享代码有一个错误,但我不知道调试器在哪里报告:

— SRC: module COMPARE_DATES_TEST$MAIN -scroll-source————————————————————————————
     1: EXTERNAL INTEGER FUNCTION COMPARE_DATES(STRING,STRING)
     2: DECLARE STRING A$, B$
     3: A$ = "01-APR-18"
     4: B$ = "15-MAY-2017"
     5:
->   6: PRINT COMPARE_DATES(A$, B$)
     7: END
— OUT -output———————————————————————————————————————————————————————————————————
stepped to COMPARE_DATES_TEST$MAIN\COMPARE_DATES_TEST$MAIN\%LINE 3
stepped to COMPARE_DATES_TEST$MAIN\COMPARE_DATES_TEST$MAIN\%LINE 4
stepped to COMPARE_DATES_TEST$MAIN\COMPARE_DATES_TEST$MAIN\%LINE 6
%BAS-F-SUBOUTRAN, Subscript out of range
-BAS-I-FROFUN, In external function COMPARE_DATES
-BAS-I-FROMOD, In module COMPARE_DATES_TEST
break on unhandled exception preceding 18446744071563830960
— PROMPT -error-program-prompt——————————————————————————————————————————————————
%DEBUG-I-SOURCESCOPE, source lines not available for %PC in scope number 0
        Displaying source for 6\%PC
DBG>

1 个答案:

答案 0 :(得分:0)

评论时间过长了:您使用STEP/INTO进行了汇总,因此我希望第6行PRINT COMPARE_DATES(A$, B$)的{​​{1}}步入COMPARE_DATES在你可分享的形象。我不知道为什么不是这样的。调试器是对的,你没有DEC$BASRTL的来源。您的可共享图片未安装,位于您的地址空间中。似乎PRINT对传递的参数有问题。我会在初始调试器提示符下尝试SET IMAGE COMPARE_DATES; SET MODULE/ALL; SET BREAK COMPARE_DATES。这使得可共享图像的所有调试符号都已知,并在函数中设置断点。然后GO应该让你进入你的功能。 (我注意到,你对函数,源模块和可共享图像都有相同的名称。这不应该是一个问题。)