[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference turris::debug

Title:DEBUG
Notice:Updated locations for reporting QARs -- see note 834.1
Moderator:LOWFAT::DIETER
Created:Fri Jan 24 1986
Last Modified:Wed Jun 04 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:1868
Total number of notes:8200

1847.0. "AXP Debuger can't examine BASIC dynamic string arrays ..." by BACHUS::SABLON (Mich�le Sablon, TP/IM Support Belgium 856-7238) Thu Mar 13 1997 11:11

[ This note was originally inserted in the DEC BASIC notes file (#202) ]

OpenVMS AXP 7.1
Basic 1.2-000

    I'm not sure if this is a debugger or a BASIC problem.

    The little program below can be use to reproduce the strange behaviour  
    of the OpenVMS AXP debugger. While an examine of a dynamic array is 
    performed, one receive the error message:

    %DEBUG-E-NOSYMBOL, symbol '...' is not in the symbol table.

    * This problem only occurs on the AXP. It doesn't on the VAX (OpenVMS 
      V6.2). I made the test with OpenVMS AXP V7.1 but the customer that found
      the problem is in V6.2.

    * It only occurs with dynamic string arrays, i.e. arrays defined using the 
      DIMENSION STRING statement, using variables as dimension specification:

      DECLARE INTERGER a%
      a% = 5%
      DIMENSION STRING array( a% )

    * It doesn't occur if the dynamic arrays are of numerical type (integer 
      and real tested) or if the dimensions are specified using CONSTANTs.

    Do I need to escalate the problem ? Best,
    Mich�le Sablon.

===============================================================================

$CREATE y.bas

1	DECLARE INTEGER a%, b%, c%, d%, e%

!	The below syntax would work:
!1	DECLARE INTEGER CONSTANT a% = 5%
!2	DECLARE INTEGER CONSTANT b% = 2%
!3	DECLARE INTEGER CONSTANT c% = 3%
!4	DECLARE INTEGER CONSTANT d% = 7%
!5	DECLARE INTEGER CONSTANT e% = 6%

6	a% = 5%
7 	b% = 2%
8	c% = 3%
9	d% = 7%
10	e% = 6%

100	DIMENSION   STRING	x1(a%)
110	DIMENSION   STRING	x2(a%, b%)
120	DIMENSION   REAL	y1(a%, b%, c%)
130	DIMENSION   INTEGER	y2(a%, b%, c%, d%)

1000	z% = 0%
	FOR i% = 1% TO a% STEP 1%
	    FOR j% = 1% TO b% STEP 1%
	    	FOR k% = 1% TO c% STEP 1%
		    FOR l% = 1% TO d% STEP 1%
		    	y2( i%,j%,k%,l% ) = z%
			z% = z% + 1
		    NEXT l%
		    y1( i%,j%,k% ) = z% * 1.1
		NEXT k%
		x2( i%,j% ) = chr$( z% )
	    NEXT j%
	    x1( i% ) = chr$( z% )
	NEXT i%

5000    FOR i% = 1% TO a% STEP 1%
            PRINT   x1(i%)
        NEXT i% 

32767	END PROGRAM 1

$ BASIC/NOOPT/DEBUG y
$ LINK/DEBUG y
$ RUN/NODEBUG y
*
T
~
�
�
$ RUN/DEBUG y
DBG> set br %li 20
DBG> go
DBG> exa x1
%DEBUG-E-NOSYMBOL, symbol 'X1' is not in the symbol table
DBG> exa x2
%DEBUG-E-NOSYMBOL, symbol 'X2' is not in the symbol table
DBG> exa y1
Y$MAIN\Y1(0:5,0:2,0:3)
    (0,0,0):    0.0000000
    (0,0,1):    0.0000000
    ...
DBG> exa y2
Y$MAIN\Y2(0:5,0:2,0:3,0:7)
    (0,0,0,0):  0
    (0,0,0,1):  0
    ...
DBG>go
*
T
~
�
�
%DEBUG-I-EXITSTATUS, is '%SYSTEM-S-NORMAL, normal successful completion'
DBG> exa x1
%DEBUG-E-NOSYMBOL, symbol 'X1' is not in the symbol table
DBG> exa y1
%DEBUG-W-SYMNOTACT, non-static variable 'Y$MAIN\Y1' is not active
T.RTitleUserPersonal
Name
DateLines
1847.1LOWFAT::DIETERThu Mar 13 1997 15:57113
When I dump out the Debug Symbol Table, it contains absolutely no
information for either x1 or x2 so, this appears to be a BASIC 
compiler problem.  That is, the compiler needs to generate debug 
information for these types of arrays.

You should probably escalate to the basic folks.  May want to 
append the dump below.

Mary

*****************************************************************************

                                           ALPHA DST Dumper   DST Version 1.16                         
                            
                                                                                                       
                            
Input  File: DBGD2$:[DIETER.WINDEX.X]Y.EXE;1                        13-MAR-1997 15:56:29.63            
                            
Output File: DBGD2$:[DIETER.WINDEX.X]Y.DMP;1                        Options : GOTO DST = All Modules   
                            
                                                                                                       
                            

00000000  Y$MAIN : Module begin, language = BASIC, flags = 02, DST version = 1.2
00000000    Compiler id = DEC BASIC V1.0-001
00000028    Source Correlation record, containing the following commands:
0000002C     Count Form-Feed records as normal records
0000002D    Source Correlation record, containing the following commands:
00000031     Associate file "DBGD2$:[DIETER.WINDEX.X]Y.BAS;1" with number 1
00000031     Date = 13-MAR-1997 15:53:28.80; EOF = block 2, byte 410; RFO = 02
00000066    Source Correlation record, containing the following commands:
0000006A     Set listing line number to 1
0000006F     Set file number to 1
00000072     Set source file record number to 1
00000077     Associate next 42 source file records with next 42 listing line numbers
0000007A    Y$MAIN : Routine begin, called with JSB instruction, code address = 00020000, pd addr =
00010000
0000008E      PC/line number correlation, as follows:
00000092        Set Absolute PC 00020000
00000097      PC/line number correlation, as follows:
0000009B        Set line number to 1
0000009D        Delta PC 0  	 Line 2 at PC 00020000
0000009E        Increment line number by 8
000000A0        Delta PC 104  	 Line 11 at PC 00020068
000000A1        Delta PC 8  	 Line 12 at PC 00020070
000000A2        Delta PC 8  	 Line 13 at PC 00020078
000000A3        Delta PC 8  	 Line 14 at PC 00020080
000000A4        Delta PC 8  	 Line 15 at PC 00020088
000000A5        Increment line number by 1
000000A7        Delta PC 8  	 Line 17 at PC 00020090
000000A8        Delta PC 32  	 Line 18 at PC 000200B0
000000A9        Delta PC 44  	 Line 19 at PC 000200DC
000000AA        Delta PC 56  	 Line 20 at PC 00020114
000000AB        Increment line number by 1
000000AD        Delta PC 68  	 Line 22 at PC 00020158
000000AE        Delta PC 4  	 Line 23 at PC 0002015C
000000AF        Delta PC 40  	 Line 24 at PC 00020184
000000B0        Delta PC 40  	 Line 25 at PC 000201AC
000000B1        Delta PC 40  	 Line 26 at PC 000201D4
000000B2        Delta PC 40  	 Line 27 at PC 000201FC
000000B3        Delta PC 176  	 Line 28 at PC 000202AC
000000B6        Delta PC 32  	 Line 29 at PC 000202CC
000000B7        Delta PC 40  	 Line 30 at PC 000202F4
000000B8        Delta PC 148  	 Line 31 at PC 00020388
000000BB        Delta PC 40  	 Line 32 at PC 000203B0
000000BC        Delta PC 124  	 Line 33 at PC 0002042C
000000BD        Delta PC 40  	 Line 34 at PC 00020454
000000BE        Delta PC 84  	 Line 35 at PC 000204A8
000000BF        Increment line number by 1
000000C1        Delta PC 40  	 Line 37 at PC 000204D0
000000C2        Delta PC 40  	 Line 38 at PC 000204F8
000000C3        Delta PC 104  	 Line 39 at PC 00020560
000000C4        Increment line number by 1
000000C6        Delta PC 40  	 Line 41 at PC 00020588
000000C7        TERM, value 56
000000C9        Set line number to 26
000000CB        Delta PC 0  	 Line 27 at PC 000205C0
000000CC        Increment line number by 2
000000CE        Delta PC 64  	 Line 30 at PC 00020600
000000CF        Increment line number by 1
000000D1        Delta PC 48  	 Line 32 at PC 00020630
000000D2        Increment line number by 1
000000D4        Delta PC 32  	 Line 34 at PC 00020650
000000D5        Increment line number by 3
000000D7        Delta PC 16  	 Line 38 at PC 00020660
000000DA      Prolog Record - new routine breakpoint location is 00020028
000000E2       L% : longword integer at 000000A8(FP)
000000EE       K% : longword integer at 000000AC(FP)
000000FA       J% : longword integer at 000000B0(FP)
00000106       I% : longword integer at 000000B4(FP)
00000112       Z% : longword integer at 000000B8(FP)
0000011E       E% : longword integer at 000000BC(FP)
0000012A       D% : longword integer at 000000C0(FP)
00000136       C% : longword integer at 000000C4(FP)
00000142       B% : longword integer at 000000C8(FP)
0000014E       A% : longword integer at 000000CC(FP)
0000015A       Nameless type specification, which is:
0000015F        descriptor type specification with:
00000162         descriptor at FFFFFF84(FP)
00000167       Y2 : (separate type specification), descriptor at FFFFFF84(FP)
00000173       Nameless type specification, which is:
00000178        indirect, defined at offset 0000015A in the DST
0000017F       Nameless type specification, which is:
00000184        descriptor type specification with:
00000187         descriptor at FFFFFFC8(FP)
0000018C       Y1 : (separate type specification), descriptor at FFFFFFC8(FP)
00000198       Nameless type specification, which is:
0000019D        indirect, defined at offset 0000017F in the DST
000001A4      Epilog, 1 address:
000001A4        000205A0
000001B1    Y$MAIN : Routine end, size = 00000670
000001BA  Y$MAIN : Module end