2017-09-06 5 views
0

Ich versuche, einige Projekte mit DEC BASIC, A.K.A zu übernehmen. VAX BASIC, A.K.A. Alpha BASIC. Ich hoffe wirklich, hier jemanden mit Erfahrung zu treffen. Ich habe das Benutzerhandbuch für VAX/Alpha BASIC durch und durch gelesen, aber ich kann nicht herausfinden, wie man gemeinsam benutzbaren Code debuggen kann.Debuggen Alpha BASIC für OpenVMS

Ich kann gemeinsam nutzbaren Code erstellen, kompilieren und verknüpfen, ich kann den Code debuggen, der auf den gemeinsam verwendbaren Code verweist, aber ich kann den gemeinsam nutzbaren Code nicht debuggen. Jede Hilfe würde sehr geschätzt werden.

Die Befehle, die ich zu kompilieren und verknüpfen bin mit sind:

$ 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 

Der Inhalt der beiden Optionsdateien sind:

$ 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 

Mein gemeinsam nutzbarer Code einen Fehler hat, aber ich weiß nicht wissen, wo die Debugger-Berichte:

— 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

Standardmäßig wird das gemeinsam nutzbare Bild von 'Sys $ Share:' geladen. Wird die Datei dort platziert oder haben Sie einen logischen Namen erstellt, der auf Ihr lokales Debugging-Image verweist? (Siehe Abschnitt 5.4 [hier] (http://h41379.www4.hpe.com/doc/84final/4538/4538pro_011.html).) – HABO

+0

Ich habe eine logische "DEFINE COMPARE_DATES DRIVE: [ORDNER] COMPARE_DATES.EXE" –

+0

hinzugefügt Normalerweise zeigt der Debugger den Quellcode an, wenn er an einem Unterbrechungspunkt anhält, was hier eine "unbehandelte Ausnahme" ist. Der Debugger meldet jedoch, dass er die Quellen nicht finden kann. Normalerweise hat der Debugger Recht. – user2116290

Antwort

0

zu lang für einen Kommentar: Sie zusammengestellt mit /NOOPTIMIZE , also hätte ich erwartet, dass ein STEP/INTO bei Zeile 6, PRINT COMPARE_DATES(A$, B$), in Ihrem shareable Bild zu COMPARE_DATES getreten wäre. Ich weiß nicht, warum das hier nicht der Fall ist. Der Debugger hat Recht, Sie haben keine Quellen für DEC$BASRTL. Ihr freigegebenes Bild ist nicht installiert, es befindet sich in Ihrem Adressbereich. Es scheint PRINT hat Probleme mit dem übergebenen Argument. Ich würde versuchen, eine SET IMAGE COMPARE_DATES; SET MODULE/ALL; SET BREAK COMPARE_DATES bei der ersten Debugger-Eingabeaufforderung. Dadurch werden alle Debugsymbole des gemeinsam verwendbaren Image bekannt und ein Haltepunkt in Ihrer Funktion festgelegt. Und dann sollte ein GO Sie in Ihre Funktion bringen. (Ich habe bemerkt, dass Sie die gleichen Namen für die Funktion, das Quellmodul und das gemeinsam nutzbare Bild haben. Dies sollte kein Problem sein.)

+0

Die [SET IMAGE COMPARE_DATES ...] hat funktioniert. Es ermöglichte dem Debugger das gemeinsame Bild. Vielen Dank. Nachdem ich drin war, stieß ich allerdings auf einen ähnlichen Fehler. In dem gemeinsam genutzten Bild gibt es zwei Funktionen, COMPARE_DATES, die aus dem Testprogramm aufgerufen werden, und ein weiteres COMPARE_DATES_PARTS. Wenn ich versuche, in die Funktion zu treten, die sich in demselben geteilten Bild befindet, sind Chokes. [Bildschirm Cap von Code und Debugger] (http://oi66.tinypic.com/2drriom.jpg) –

+0

Haben Sie versucht, '' 'STEP/INTO''' die Funktion' '' COMPARE_DATE_PARTS'''?Vielleicht kann das dir Anhaltspunkte geben. Für mich sieht das nicht wie ein Debugger-Problem aus. Auf der anderen Seite weiß ich nicht genug von BASIC, um die Code-Snippets zu verstehen, die Sie gepostet haben: In main gibt es ein '' 'COMPARE_DATES (A $, B $)' '', Zeichenfolgen werden in '' 'COMPARE_DATES übergeben '' 'Es gibt ein' '' COMPARE_DATE_PARTS (DATE_PART_A%, DATE_PART_B%) '' ', ganze Zahlen werden übergeben. Also gibt es wahrscheinlich mehr Code in '' COMPARE_DATES'''. Möglicherweise möchten/müssen Sie mehr vom Quellcode anzeigen. – user2116290