Re: Question for getting GNU Cobol work with GDB

Sergio Durigan Junior <[email protected]> Wed, 09 Oct 2013 18:59:31 -0300
Newsgroups gmane.comp.gdb.general
Message-ID <[email protected]>
On Monday, October 07 2013, Simon Sobisch wrote:

> Hi co-hackers,

Hi, there!

> GNU Cobol (formerly OpenCOBOL) translates COBOL to C (compiling it with GCC).
> We try to use GDB as debugging frontend but are unsure how some points can be reached without actually patching the GDB (if it's possible at all).
> As one of the maintainers of GNU Cobol I write to you with the hope that we can get as far as possible.

Thank you for your contact.  This list, however, is not the main list of
the GDB project.  I strongly suggest that you post your message to
<[email protected]>, because there is the official list for GDB users
and developers :-).

While we're at it...

> A sample is attached, snippets:
>
> HELLO.cob:
>
>               INSPECT user-input REPLACING TRAILING SPACES BY LOW-VALUE
>               MOVE SPACES TO output-msg
>               STRING 'Hello "'  DELIMITED BY SIZE
>                      user-input DELIMITED BY LOW-VALUE
>                      '"!'       DELIMITED BY SIZE
>                      INTO output-msg
>               END-STRING
>
> HELLO.c[h,l.h]
>
> static cob_field f_6	= {80, b_6, &a_1};	/* output-msg */
> static cob_field f_7	= {50, NULL, &a_1};	/* user-input */
>
> static int
> HELLO_ (const int entry)
>
>
> 	// [...]
>
>         unsigned char	*b_7 = NULL;	/* user-input */
>
> 	// [...]
>
>         /* HELLO.cob:23: INSPECT */
>
>         cob_set_location ("HELLO", "HELLO.cob", 23, "MAIN SECTION", "MAIN PARAGRAPH", "INSPECT");
>         {
>           cob_inspect_init ((f_7.data = b_7, &f_7), 1);
>           cob_inspect_start ();
>           cob_inspect_trailing (&cob_low, &cob_space);
>           cob_inspect_finish ();
>         }
>         /* HELLO.cob:24: MOVE */
>         cob_set_location ("HELLO", "HELLO.cob", 24, "MAIN SECTION", "MAIN PARAGRAPH", "MOVE");
>         {
>           memset (b_6, 32, 80);
>         }
>         /* HELLO.cob:25: STRING */
>         cob_set_location ("HELLO", "HELLO.cob", 25, "MAIN SECTION", "MAIN PARAGRAPH", "STRING");
>         {
>           cob_string_init (&f_6, 0);
>           cob_string_delimited (0);
>           cob_string_append (&c_3);
>           cob_string_delimited (&cob_low);
>           cob_string_append ((f_7.data = b_7, &f_7));
>           cob_string_delimited (0);
>           cob_string_append (&c_4);
>           cob_string_finish ();
>         }
>
> 	// [...]
> }
>
> Not clear is how to
> - let the programmer see only the COBOL source, not the C source, while stepping
> - let the programmer view/change/... COBOL variables (there is a mapping like you can see above)
> - set breakpoints within the COBOL source

There's been some discussion about a related topic (IIRC it was about
ultimately making GDB able to debug Python programs, for example), but I
am not really sure.  Does GNU Cobol generate a binary directly, or only
the C translation?  If it can generate binaries, then perhaps it's
possible to make GDB debug the binaries directly, instead of trying to
do this C <-> Cobol translation inside it.  But that's just an idea, really.

Please, send your message again to the Sourceware list, and we'll
continue discussing it there :-).

Thanks!

-- 
Sergio