gdb/2211: Cannot Share GDB variables with 'set env' or 'shell' commands
Mon Dec 4 18:08:00 GMT 2006

>Number:         2211
>Category:       gdb
>Synopsis:       Cannot Share GDB variables with 'set env' or 'shell' commands
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Mon Dec 04 18:08:01 GMT 2006
>Originator:     M. Bytnar
>Release:        gdb-6.4
Fedora Core
There is no means to evaluate a GDB expression in the 'set env' or 'shell' commands.
Please correct me if I am wrong, since the documentation and use of GDB has not revealed a way to do so.

Benefits of implementing this feature:
* A means to display a date variable in human readable by using the shell's "date" command.
* A means to customize program arguments for automation from within gdb.

Granted, setting variables is a first step. A second future step/suggestion might allow one to import shell variables into GDB variables. ie. 

  set env CURDATE=`date +%s`
  p shell_eval($CURDATE)

where "shell_eval(expression)" evaluates the given expression using the shell or 'set env' environment variables.
Ideally, I would like to display the date (stored as seconds since the Unix Epoch) in my currently executing program (or from a core dump) to a human readable form using the 'date -d' shell command:

shell date -d '1970-01-01 gdb_eval(MyProgram::CurDate.secondsSinceEpoch) sec'

Where 'gdb_eval(expression)' is a means to evaluate an expression within the gdb 'shell' or 'set env' commands.

Currently, attempts to store a GDB variable using 'set env' or 'shell' both fail, because GDB forwards the string without performing evaluation.


More information about the Gdb-prs mailing list