我正在尝试接管一些涉及DEC BASIC,又称VAX BASIC,AK.AK.AK 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我的可共享代码有一个bug,但我不知道在哪里,调试器报告:
— 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>发布于 2017-09-07 15:40:05
评论太长了:您是用/NOOPTIMIZE编译的,所以我本以为STEP/INTO在第6行PRINT COMPARE_DATES(A$, B$)时会跳到您的可共享映像中的COMPARE_DATES。我不知道为什么在这里不是这样。调试器是对的,您没有DEC$BASRTL的源代码。您的可共享映像未安装,它在您的地址空间中。看起来PRINT对传递的参数有问题。我会在初始调试器提示符下尝试SET IMAGE COMPARE_DATES; SET MODULE/ALL; SET BREAK COMPARE_DATES。这使得可共享映像的所有调试符号都是已知的,并在您的函数中设置断点。然后,GO应该会让你进入你的函数。(我注意到,函数、源模块和可共享图像的名称相同。这应该不是问题。)
https://stackoverflow.com/questions/46069819
复制相似问题