This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC] Alternate approach to keeping convenience variables


Jim Blandy wrote:
The $trace_frame variable is set to -1 when GDB starts, which
indicates that there's no trace frame selected.  I think it would be a
little more helpful for the variables to always exist: you can write
user-defined commands that give a reasonable error message, for
example.  GDB doesn't have any way (?) to check whether a convenience
variable has been initialized yet.

A newly created convenience variable has the value 'void'. (A variable is created the first time it is referenced, even as an rvalue.) Therefore, if it is 'void' it can be considered uninitialised.


This is how the 'init-if-undefined' command works.

The only way (I know of) to set it back to 'void', once assigned another value, is to assign the value of another uninitialised variable, which I would consider as copying the undefined status as well as the value 'void'.

So an example GDB script fragment to check a variable might look like this:

set $temp = $trace_frame
init-if-undefined $temp = 99999
if $temp == 99999

Copying the value to $temp ensures that the original variable $trace_frame remains undamaged.

HTH

Andrew Stubbs


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]