Skip to content

Need to print as expression

A common print shows the requested value and the internal variable matching the expression. As cprint adds a lot of quite useful info (internally creating multiple expressions), it is not reasonable to do this there.

But actually GDB's auto-assignment of an expression to a variable is necessary to allow "a possibly complex expression" (like the internal dumping of the field) to be used in different places (cprint 2 emulates this).

Is it possible to use a special cprint session form for that, something like cprint/ve which will then show the lovely

$2 = 25

? This would allow something like:

(gdb) cprint/ve oeit-custnum
$3 = 00000
(gdb) cprint counter
 1 : 05 my-counters/working-data/optfde01 [W-S] : "Records modified: 00003"
 2 : 10 custmas-ctr/my-counters/working-data/optfde01 [W-S] : 00003
(gdb) cprint/ve 2
$4 = 00003
(gdb) break optfde01_:SECTION_SOME_SECT if $3 == $4 && $4 == $3
Breakpoint 2 at 0x7fac1f3b1554: file /tmp/optfde01.cob, line 120.
(gdb) c
ontinuing.

Breakpoint 2, 0x00007fac1f3b1554 in optfde01_ (entry=0) at /tmp/optfde01.cob:120
(gdb) cond 2 $3 != $4
(gdb) c

Side note: For a dancing bear - this is NOT what this issue is about - something like cbreak section some-sec if oeit-custnum greater than custmas-ctr would be marvelous, but that's teaching GDB how COBOL works, so a separate cbreak section and then cond with previously seen expressions should be al we aim for now.