This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: Problem with setting register value using MI interface
Grzegorz Cieslewski wrote:
> Hi,
>
> I am trying to write a value to a register using MI2 interface.
> Unfortunately sometimes th -var-assign command fails and gives me
> error. Does any one know why is that?
>
> GDB<< -var-create r1 * $r1
> GDB>> ^done,name="r1",numchild="0",value="2140372880",type="uint32_t"
> GDB>> (gdb)
> GDB<< -var-info-type r1
> GDB>> ^done,type="uint32_t"
> GDB>> (gdb)
> GDB<< -var-set-format r1 hexadecimal
> GDB>> ^done,format="hexadecimal"
> GDB>> (gdb)
> GDB<< -var-evaluate-expression r1
> GDB>> ^done,value="0x7f937f90"
> GDB>> (gdb)
> GDB<< -var-info-type r1
> GDB>> ^done,type="uint32_t"
> GDB>> (gdb)
> GDB<< -var-set-format r1 hexadecimal
> GDB>> ^done,format="hexadecimal"
> GDB>> (gdb)
> GDB<< -var-assign r1 1
> GDB>> &"mi_cmd_var_assign: Could not assign expression to variable
> object\n" GDB>> ^error,msg="mi_cmd_var_assign: Could not assign expression
> to variable object"
Is this a complete output, with no commands in between? Can you reproduce
this on x86, and if so, can you post a complete reproduction recipe?
The only 'error' I immediately see on that code path is this:
if (!frame)
error (_("Value being assigned to is no longer active."));
in value_assign, but I don't think it can ever fire unless you change frames above.
- Volodya