2017-09-06 8 views
0

私はDEC BASIC、A.K.Aを含むいくつかのプロジェクトを引き継ぎようとしています。 VAX BASIC、A.K.A.アルファBASIC。私は本当にここで経験を持つ人に遭遇したいと思っています。私はVAX/Alpha BASICのユーザーマニュアルを通り抜けましたが、共有可能なコードをデバッグする方法を理解することはできません。OpenVMS用のAlpha BASICのデバッグ

共有可能なコードを作成、コンパイル、リンクすることはできますが、共有可能なコードを参照するコードはデバッグできますが、共有可能なコードはデバッグできません。どんな助けでも大歓迎です。

私はコンパイルとリンクするために使用していますコマンドは次のとおりです。2つのオプションファイルの

$ 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:'から読み込まれます。ファイルが置かれている場所ですか、またはローカルのデバッグイメージを指す論理名を作成していますか? (Ref 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でコンパイルしたところ、デバッガの報道を知っていますだから、私は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

[画像を設定する]を有効にしました。これは、共有イメージにデバッガを許可しました。どうもありがとうございました。私がいた後、私は同様のエラーに遭遇した。共有イメージには、テストプログラムから呼び出されるCOMPARE_DATESと別のCOMPARE_DATES_PARTSという2つの関数があります。同じ共有イメージに存在する関数にステップインしようとすると、チョークになります。 [コードとデバッガのスクリーンキャップ](http://oi66.tinypic.com/2drriom.jpg) –

+0

関数 '' '' 'COMPARE_DATE_PARTS'''を' '' STEP/INTO''してみましたか?多分それはあなたにいくつかの手がかりを与えることができます。私にとっては、これはデバッガの問題のようには見えません。一方、あなたが投稿したコードスニペットを理解するのに十分なBASICについてはわかりません:メインでは '' COMPARE_DATES(A $、B $) ''があり、 '' COMPARE_DATES '' '' '' COMPARE_DATE_PARTS(DATE_PART_A%、DATE_PART_B%) ''があり、整数が渡されます。したがって、 '' 'COMPARE_DATES'''にはもっと多くのコードがあります。より多くのソースコードを表示する必要があるかもしれません。 – user2116290

関連する問題