Skip to main content

Hello - I'm having trouble getting the symbol table to load while in the debugger - can someone tell me what I'm doing wrong please?

***There is no symbol table in '/usr/ud/sys/CTLG/m/MV.EMAIL.BUILD.TO.PC.AND.TO.S
B'
!EXEC BASIC MV.BP MV.EMAIL.BUILD.TO.PC.AND.TO.SB -Z2
***Executing UNIDATA command:  BASIC MV.BP MV.EMAIL.BUILD.TO.PC.AND.TO.SB -Z2

Compiling Unibasic: /db1/ud1/PGM/MV.BP/MV.EMAIL.BUILD.TO.PC.AND.TO.SB in mode 'u
'.
compilation finished
!Z MV.BP MV.EMAIL.BUILD.TO.PC.AND.TO.SB
***There is no symbol table in '/usr/ud/sys/CTLG/m/MV.EMAIL.BUILD.TO.PC.AND.TO.S
B'



------------------------------
kathleen hambrick
Programmer
Rocket Forum Shared Account
------------------------------

Hello - I'm having trouble getting the symbol table to load while in the debugger - can someone tell me what I'm doing wrong please?

***There is no symbol table in '/usr/ud/sys/CTLG/m/MV.EMAIL.BUILD.TO.PC.AND.TO.S
B'
!EXEC BASIC MV.BP MV.EMAIL.BUILD.TO.PC.AND.TO.SB -Z2
***Executing UNIDATA command:  BASIC MV.BP MV.EMAIL.BUILD.TO.PC.AND.TO.SB -Z2

Compiling Unibasic: /db1/ud1/PGM/MV.BP/MV.EMAIL.BUILD.TO.PC.AND.TO.SB in mode 'u
'.
compilation finished
!Z MV.BP MV.EMAIL.BUILD.TO.PC.AND.TO.SB
***There is no symbol table in '/usr/ud/sys/CTLG/m/MV.EMAIL.BUILD.TO.PC.AND.TO.S
B'



------------------------------
kathleen hambrick
Programmer
Rocket Forum Shared Account
------------------------------

Kathleen,

I've been testing this internally and this looks like a bug in UniData on all of the current GA versions. I will raise a ticket on this.

Regards,

Jonathan



------------------------------
Jonathan Smith
UniData ATS
Rocket Support
------------------------------

Kathleen,

I've been testing this internally and this looks like a bug in UniData on all of the current GA versions. I will raise a ticket on this.

Regards,

Jonathan



------------------------------
Jonathan Smith
UniData ATS
Rocket Support
------------------------------

For reference I have created issue UDT-20602 for this, Kathleen if you want to raise a support ticket with us on this, I can link the bug ticket to the support case in order to keep you and the customer updated on progress on the ticket.



------------------------------
Jonathan Smith
UniData ATS
Rocket Support
------------------------------


For reference I have created issue UDT-20602 for this, Kathleen if you want to raise a support ticket with us on this, I can link the bug ticket to the support case in order to keep you and the customer updated on progress on the ticket.



------------------------------
Jonathan Smith
UniData ATS
Rocket Support
------------------------------

What is my work around? To recompile all programs and recatalog before debugging?



------------------------------
kathleen hambrick
Programmer
Rocket Forum Shared Account
------------------------------

What is my work around? To recompile all programs and recatalog before debugging?



------------------------------
kathleen hambrick
Programmer
Rocket Forum Shared Account
------------------------------

@Grant Boice I noticed a problem in my testing script so I've removed some of the posts on this to tidy up the thread a bit as I did more testing internally and I found a way to make it work to everytime as I could see the assumptions the parser is making with the Z command.

The Z command syntax is Z filename programname catalogname. If no catalogname is specified, catalogname defaults to programname.

Based on these results I will be updating the internal ticket and documentation.

Here are the results of the internal testing

If the program has no catalog entry and you run the program it fails to load the symbol table, the reason for this is that the catalog entry defaults to KH001 from which there is no VOC entry so assumes it's a global catalog entry and attempts to load the symbol type from where the global catalog entry would point to $UDTHOME/sys/CTLG and fails because it cannot find it.

:RUN BP KH001 -D
***DEBUGGER called at line 1 of program BP\\_KH001
!\\*
***There is no symbol table in BP\\_KH001
!EXEC BASIC BP KH001 -Z2
***Executing UNIDATA command:  BASIC BP KH001 -Z2

Compiling Unibasic: BP\\KH001 in mode 'u'.
compilation finished
!Z BP KH001
***Can not find object/catalog file: 'C:\\u2\\ud\\sys\\CTLG\\k\\KH001'.
!E

If the program has a direct catalog entry it works and it finds the VOC entry for KH001 and it resolves to the item in the file that was just compiled and finds the symbol table in that file and loads it succesfully.

:CATALOG BP KH001 DIRECT

:KH001 -D
***DEBUGGER called at line 1 of program BP\\_KH001
!\\*
***There is no symbol table in BP\\_KH001
!EXEC BASIC BP KH001 -Z2
***Executing UNIDATA command:  BASIC BP KH001 -Z2

Compiling Unibasic: BP\\KH001 in mode 'u'.
compilation finished
!Z BP KH001
!\\*
Program Name : BP\\_KH001
        Name                    Type
        A                       variable
        B                       variable
        C                       variable
        D                       variable
!E

If the program has a local catalog entry, if fails because it tries to load the symbol table from the local catalog which would not have been refreshed by the EXEC BASIC command.

:CATALOG BP KH001 LOCAL

:KH001 -D
***DEBUGGER called at line 1 of program C:\\accounts\\ud\\general\\CTLG\\KH001
!\\*
***There is no symbol table in C:\\accounts\\ud\\general\\CTLG\\KH001
!EXEC BASIC BP KH001 -Z2
***Executing UNIDATA command:  BASIC BP KH001 -Z2

Compiling Unibasic: BP\\KH001 in mode 'u'.
compilation finished
!Z BP KH001
***There is no symbol table in 'C:\\accounts\\ud\\general\\CTLG\\KH001'
!E

If the program is globally cataloged it fails because it tries to load the symbol table from the local catalog which would not have been refreshed by the EXEC BASIC command.

:CATALOG BP KH001

:KH001 -D
***DEBUGGER called at line 1 of program C:\\u2\\ud\\sys\\CTLG\\k\\KH001
!\\*
***There is no symbol table in C:\\u2\\ud\\sys\\CTLG\\k\\KH001
!EXEC BASIC BP KH001 -Z2
***Executing UNIDATA command:  BASIC BP KH001 -Z2

Compiling Unibasic: BP\\KH001 in mode 'u'.
compilation finished
!Z BP KH001
***There is no symbol table in 'C:\\u2\\ud\\sys\\CTLG\\k\\KH001'
!E
:

To get it working for a LOCAL catalog

:CATALOG BP KH001 LOCAL
:KH001 -D
***DEBUGGER called at line 1 of program C:\\accounts\\ud\\general\\CTLG\\KH001
!\\*
***There is no symbol table in C:\\accounts\\ud\\general\\CTLG\\KH001
!EXEC BASIC BP KH001 -Z2
***Executing UNIDATA command:  BASIC BP KH001 -Z2

Compiling Unibasic: BP\\KH001 in mode 'u'.
compilation finished
!EXEC CATALOG BP KH001 LOCAL FORCE
***Executing UNIDATA command:  CATALOG BP KH001 LOCAL FORCE
!Z BP KH001
!\\*
Program Name : C:\\accounts\\ud\\general\\CTLG\\KH001
        Name                    Type
        A                       variable
        B                       variable
        C                       variable
        D                       variable

!E

To get it working for a global catalog

:CATALOG BP KH001
:KH001 -D
***DEBUGGER called at line 1 of program C:\\u2\\ud\\sys\\CTLG\\k\\KH001
!\\*
***There is no symbol table in C:\\u2\\ud\\sys\\CTLG\\k\\KH001
!EXEC BASIC BP KH001 -Z2
***Executing UNIDATA command:  BASIC BP KH001 -Z2

Compiling Unibasic: BP\\KH001 in mode 'u'.
compilation finished
!EXEC CATALOG BP KH001 FORCE
***Executing UNIDATA command:  CATALOG BP KH001 FORCE
!Z BP KH001
!\\*&
***Illegal debugger command. Try 'H' for HELP
!\\*
Program Name : C:\\u2\\ud\\sys\\CTLG\\k\\KH001
        Name                    Type
        A                       variable
        B                       variable
        C                       variable
        D                       variable

!E

For a direct run with no catalog, you can catalog it direct or global to get it to work

:RUN BP KH001 -D
***DEBUGGER called at line 1 of program BP\\_KH001
!\\*
***There is no symbol table in BP\\_KH001
!EXEC BASIC BP KH001 -Z2
***Executing UNIDATA command:  BASIC BP KH001 -Z2

Compiling Unibasic: BP\\KH001 in mode 'u'.
compilation finished
!EXEC CATALOG BP KH001 DIRECT
***Executing UNIDATA command:  CATALOG BP KH001 DIRECT
!Z BP KH001
!\\*
Program Name : BP\\_KH001
        Name                    Type
        A                       variable
        B                       variable
        C                       variable
        D                       variable

Thanks



------------------------------
Jonathan Smith
UniData ATS
Rocket Support
------------------------------


@Grant Boice I noticed a problem in my testing script so I've removed some of the posts on this to tidy up the thread a bit as I did more testing internally and I found a way to make it work to everytime as I could see the assumptions the parser is making with the Z command.

The Z command syntax is Z filename programname catalogname. If no catalogname is specified, catalogname defaults to programname.

Based on these results I will be updating the internal ticket and documentation.

Here are the results of the internal testing

If the program has no catalog entry and you run the program it fails to load the symbol table, the reason for this is that the catalog entry defaults to KH001 from which there is no VOC entry so assumes it's a global catalog entry and attempts to load the symbol type from where the global catalog entry would point to $UDTHOME/sys/CTLG and fails because it cannot find it.

:RUN BP KH001 -D
***DEBUGGER called at line 1 of program BP\\_KH001
!\\*
***There is no symbol table in BP\\_KH001
!EXEC BASIC BP KH001 -Z2
***Executing UNIDATA command:  BASIC BP KH001 -Z2

Compiling Unibasic: BP\\KH001 in mode 'u'.
compilation finished
!Z BP KH001
***Can not find object/catalog file: 'C:\\u2\\ud\\sys\\CTLG\\k\\KH001'.
!E

If the program has a direct catalog entry it works and it finds the VOC entry for KH001 and it resolves to the item in the file that was just compiled and finds the symbol table in that file and loads it succesfully.

:CATALOG BP KH001 DIRECT

:KH001 -D
***DEBUGGER called at line 1 of program BP\\_KH001
!\\*
***There is no symbol table in BP\\_KH001
!EXEC BASIC BP KH001 -Z2
***Executing UNIDATA command:  BASIC BP KH001 -Z2

Compiling Unibasic: BP\\KH001 in mode 'u'.
compilation finished
!Z BP KH001
!\\*
Program Name : BP\\_KH001
        Name                    Type
        A                       variable
        B                       variable
        C                       variable
        D                       variable
!E

If the program has a local catalog entry, if fails because it tries to load the symbol table from the local catalog which would not have been refreshed by the EXEC BASIC command.

:CATALOG BP KH001 LOCAL

:KH001 -D
***DEBUGGER called at line 1 of program C:\\accounts\\ud\\general\\CTLG\\KH001
!\\*
***There is no symbol table in C:\\accounts\\ud\\general\\CTLG\\KH001
!EXEC BASIC BP KH001 -Z2
***Executing UNIDATA command:  BASIC BP KH001 -Z2

Compiling Unibasic: BP\\KH001 in mode 'u'.
compilation finished
!Z BP KH001
***There is no symbol table in 'C:\\accounts\\ud\\general\\CTLG\\KH001'
!E

If the program is globally cataloged it fails because it tries to load the symbol table from the local catalog which would not have been refreshed by the EXEC BASIC command.

:CATALOG BP KH001

:KH001 -D
***DEBUGGER called at line 1 of program C:\\u2\\ud\\sys\\CTLG\\k\\KH001
!\\*
***There is no symbol table in C:\\u2\\ud\\sys\\CTLG\\k\\KH001
!EXEC BASIC BP KH001 -Z2
***Executing UNIDATA command:  BASIC BP KH001 -Z2

Compiling Unibasic: BP\\KH001 in mode 'u'.
compilation finished
!Z BP KH001
***There is no symbol table in 'C:\\u2\\ud\\sys\\CTLG\\k\\KH001'
!E
:

To get it working for a LOCAL catalog

:CATALOG BP KH001 LOCAL
:KH001 -D
***DEBUGGER called at line 1 of program C:\\accounts\\ud\\general\\CTLG\\KH001
!\\*
***There is no symbol table in C:\\accounts\\ud\\general\\CTLG\\KH001
!EXEC BASIC BP KH001 -Z2
***Executing UNIDATA command:  BASIC BP KH001 -Z2

Compiling Unibasic: BP\\KH001 in mode 'u'.
compilation finished
!EXEC CATALOG BP KH001 LOCAL FORCE
***Executing UNIDATA command:  CATALOG BP KH001 LOCAL FORCE
!Z BP KH001
!\\*
Program Name : C:\\accounts\\ud\\general\\CTLG\\KH001
        Name                    Type
        A                       variable
        B                       variable
        C                       variable
        D                       variable

!E

To get it working for a global catalog

:CATALOG BP KH001
:KH001 -D
***DEBUGGER called at line 1 of program C:\\u2\\ud\\sys\\CTLG\\k\\KH001
!\\*
***There is no symbol table in C:\\u2\\ud\\sys\\CTLG\\k\\KH001
!EXEC BASIC BP KH001 -Z2
***Executing UNIDATA command:  BASIC BP KH001 -Z2

Compiling Unibasic: BP\\KH001 in mode 'u'.
compilation finished
!EXEC CATALOG BP KH001 FORCE
***Executing UNIDATA command:  CATALOG BP KH001 FORCE
!Z BP KH001
!\\*&
***Illegal debugger command. Try 'H' for HELP
!\\*
Program Name : C:\\u2\\ud\\sys\\CTLG\\k\\KH001
        Name                    Type
        A                       variable
        B                       variable
        C                       variable
        D                       variable

!E

For a direct run with no catalog, you can catalog it direct or global to get it to work

:RUN BP KH001 -D
***DEBUGGER called at line 1 of program BP\\_KH001
!\\*
***There is no symbol table in BP\\_KH001
!EXEC BASIC BP KH001 -Z2
***Executing UNIDATA command:  BASIC BP KH001 -Z2

Compiling Unibasic: BP\\KH001 in mode 'u'.
compilation finished
!EXEC CATALOG BP KH001 DIRECT
***Executing UNIDATA command:  CATALOG BP KH001 DIRECT
!Z BP KH001
!\\*
Program Name : BP\\_KH001
        Name                    Type
        A                       variable
        B                       variable
        C                       variable
        D                       variable

Thanks



------------------------------
Jonathan Smith
UniData ATS
Rocket Support
------------------------------

I am aware that having to recatalog the code to get this to work is not ideal and not completly without risk and is not something that should be done without very careful consideration in a live environment.

Although as demostrated it can be worked around I think the best solution until we've looked more into the problem here is to compile with the symbol table (-Z2) switch before putting programs into production.



------------------------------
Jonathan Smith
UniData ATS
Rocket Support
------------------------------