首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试Alpha BASIC for OpenVMS

调试Alpha BASIC for OpenVMS
EN

Stack Overflow用户
提问于 2017-09-06 16:02:06
回答 1查看 116关注 0票数 0

我正在尝试接管一些涉及DEC BASIC,又称VAX BASIC,AK.AK.AK Alpha BASIC的项目。我真的很希望能在这里遇到有经验的人。我已经通读了VAX/Alpha BASIC的用户手册,但是我不知道如何调试可共享的代码。

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

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

代码语言:javascript
复制
$ 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

这两个选项文件的内容是:

代码语言:javascript
复制
$ 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,但我不知道在哪里,调试器报告:

代码语言:javascript
复制
— 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>
EN

回答 1

Stack Overflow用户

发布于 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应该会让你进入你的函数。(我注意到,函数、源模块和可共享图像的名称相同。这应该不是问题。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46069819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档