2017-09-06 12 views
0

DEC BASIC, A.K.A와 관련된 일부 프로젝트를 인수하려고합니다. VAX BASIC, A.K.A. 알파 기본. 나는 여기서 경험을 가진 사람을 만나기를 정말로 바라고 있습니다. 나는 VAX/Alpha BASIC에 대한 사용자 설명서를 처음부터 끝까지 읽었지만 공유 가능한 코드를 디버그하는 방법을 알지 못합니다.OpenVMS 용 알파 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> 
+0

기본적으로 공유 가능한 이미지는'Sys $ Share :'에서로드 될 것이다. 파일이 저장되는 곳입니까 아니면 로컬 디버깅 이미지를 가리 키기위한 논리 이름을 만들었습니까? (참조 섹션 5.4 [여기] (http://h41379.www4.hpe.com/doc/84final/4538/4538pro_011.html)) – HABO

+0

논리 "DEFINE COMPARE_DATES DRIVE : [FOLDER] COMPARE_DATES.EXE" –

+0

을 추가했습니다. 일반적으로 디버거는 중단 점에서 중단 될 때 소스 코드를 표시합니다.이 코드는 "처리되지 않은 예외"입니다. 그러나 디버거는 소스를 찾을 수 없다고보고합니다. 보통 디버거가 옳다. – user2116290

답변

0

: 당신은 /NOOPTIMIZE로 컴파일 된 경우, 디버거 보고서를 알고 그래서 나는 라인 12에서 이 PRINT COMPARE_DATES(A$, B$) 일 때 공유 가능한 이미지에서 COMPARE_DATES으로 올라 갔을 것이라고 예상했다. 그게 왜 그게 아닌지 나는 모른다. 디버거가 맞습니다. DEC$BASRTL에 대한 소스가 없습니다. 공유 할 수있는 이미지가 설치되지 않았습니다. 주소 공간에 있습니다. PRINT에 전달 된 인수에 문제가있는 것 같습니다. 나는 초기 디버거 프롬프트에서 SET IMAGE COMPARE_DATES; SET MODULE/ALL; SET BREAK COMPARE_DATES을 시도 할 것이다. 그러면 공유 가능한 이미지의 모든 디버그 기호가 알려지고 함수에 중단 점이 설정됩니다. 그리고 나서 GO이 당신을 당신의 기능에 넣을 것입니다. (나는 함수, 소스 모듈, 공유 가능한 이미지에 대해 같은 이름을 가지고 있음을 알아 차렸다.)

+0

[SET IMAGE COMPARE_DATES ...]가 작동했습니다. 그것은 공유 이미지에 디버거를 허용했습니다. 너무 감사합니다. 내가 들어가고 난 후에도 비슷한 오류가 발생했습니다. 공유 이미지에는 테스트 프로그램에서 호출되는 COMPARE_DATES와 다른 COMPARE_DATES_PARTS라는 두 가지 기능이 있습니다. 같은 공유 이미지에있는 함수로 들어가려고 할 때 질식합니다. [코드 및 디버거의 화면 캡쳐] (http://oi66.tinypic.com/2drriom.jpg) –

+0

'''STEP/INTO'' 함수''''COMPARE_DATE_PARTS'''를 시도 했습니까?어쩌면 그것은 당신에게 단서를 줄 수 있습니다. 나에게 이것은 디버거 문제처럼 보이지 않는다. 다른 한편으로는, 내가 게시 한 코드 스 니펫을 이해할 수있는 BASIC에 대해 충분히 알지 못한다. 메인에는''COMPARE_DATES (A $, B $)''가 있고, 문자열은''COMPARE_DATES ''''''COMPARE_DATE_PARTS (DATE_PART_A %, DATE_PART_B %)''', 정수가 전달됩니다. 그래서'''COMPARE_DATES'''에 더 많은 코드가있을 것입니다. 더 많은 소스 코드를 보여주고 싶을 수도 있습니다. – user2116290