2017-09-06 5 views
0

J'essaie de reprendre certains projets impliquant DEC BASIC, A.K.A. VAX BASIC, A.K.A. Alpha BASIC. J'espère vraiment rencontrer quelqu'un avec de l'expérience ici. J'ai traversé le manuel d'utilisation pour VAX/Alpha BASIC à travers et bien que je ne peux pas comprendre comment déboguer le code partageable.Débogage Alpha BASIC pour OpenVMS

Je peux créer, compiler et lier du code partageable, je peux déboguer le code qui fait référence au code partageable, mais je ne peux pas déboguer le code partageable. Toute aide serait grandement appréciée.

Les commandes que je utilise pour compiler et lier sont:

$ 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 

Le contenu des deux fichiers d'options sont:

$ 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 

Mon code partageable a un bug, mais je ne le font pas savoir où, les rapports de débogage:

— 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

Par défaut, l'image partageable sera chargée à partir de 'Sys $ Share:'. Est-ce l'endroit où le fichier est placé, ou avez-vous créé un nom logique pour pointer vers votre image de débogage locale? (Réf section 5.4 [ici] (http://h41379.www4.hpe.com/doc/84final/4538/4538pro_011.html).) – HABO

+0

J'ai ajouté une logique "DEFINE COMPARE_DATES DRIVE: [FOLDER] COMPARE_DATES.EXE" –

+0

Habituellement, le débogueur vous montrera le code source lorsqu'il s'arrête à un point de rupture, qui est une "exception non gérée". Le débogueur signale cependant qu'il ne peut pas trouver les sources. Habituellement, le débogueur a raison. – user2116290

Répondre

0

Trop long pour un commentaire: Vous avez compilé avec /NOOPTIMIZE , donc je m'attendais à ce qu'un STEP/INTO à la ligne 6, PRINT COMPARE_DATES(A$, B$), serait passé à COMPARE_DATES dans votre image partageable. Je ne sais pas pourquoi ce n'est pas le cas ici. Le débogueur a raison, vous n'avez pas les sources pour DEC$BASRTL. Votre image partageable n'est pas installée, elle se trouve dans votre espace d'adressage. Il semble que PRINT a des problèmes avec l'argument passé. Je voudrais essayer un SET IMAGE COMPARE_DATES; SET MODULE/ALL; SET BREAK COMPARE_DATES à l'invite de débogage initiale. Cela fait connaître tous les symboles de débogage de l'image partageable et définit un point d'arrêt dans votre fonction. Et puis un GO devrait vous mettre dans votre fonction. (J'ai remarqué que vous avez les mêmes noms pour la fonction, le module source et l'image partageable Cela ne devrait pas poser de problème.)

+0

" [SET IMAGE COMPARE_DATES ...] a fonctionné. Il a permis au débogueur dans l'image partagée. Merci beaucoup. Après avoir été dans je me suis heurté à une erreur similaire. Dans l'image partagée, il y a deux fonctions, COMPARE_DATES, celle qui est appelée depuis le programme de test et une autre COMPARE_DATES_PARTS. Lorsque j'essaie d'entrer dans la fonction qui réside dans la même image partagée est étranglée. [Cap écran de code et débogueur] (http://oi66.tinypic.com/2drriom.jpg) –

+0

Avez-vous essayé de '' 'STEP/INTO''' la fonction' '' COMPARE_DATE_PARTS'''?Peut-être que cela peut vous donner des indices. Pour moi, cela ne ressemble pas à un problème de débogueur. Par contre, je ne connais pas assez le BASIC pour comprendre les extraits de code que vous avez postés: en main il y a un '' 'COMPARE_DATES (A $, B $)' '', les chaînes sont passées, dans '' 'COMPARE_DATES '' 'il y a un' '' COMPARE_DATE_PARTS (DATE_PART_A%, DATE_PART_B%) '' ', les entiers sont passés. Il y a donc probablement plus de code dans '' '' COMPARE_DATES'''. Vous voudrez peut-être/devez montrer plus de code source. – user2116290