Can gdbmi process many commands at once?

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Can gdbmi process many commands at once?

Bob Rossi
Hi,

I'm trying to determine if GDB/MI has the capability of accepting and
working on multiple commands at once?

For instance, if I run these commands,
    (gdb)
    123-interpreter-exec console "p argc"
    ~"$3 = 1"
    ~"\n"
    123^done
    (gdb)
    234-interpreter-exec console "p argv[1]"
    ~"$4 = 0x0\n"
    234^done

Is there any mode in which the command,
    234-interpreter-exec console "p argv[1]"
will be worked on before
    123-interpreter-exec console "p argc"
is finished?

The implication is that i'm expecting to have at most 1 command active
with GDB at a time. I'm curious if there is a situation where a front
end could have many active commands at a time. By active I mean,
I issue several commands, and then some time later, I get a response
on each of these, in any order.

Thanks,
Bob Rossi
Reply | Threaded
Open this post in threaded view
|

Re: Can gdbmi process many commands at once?

Vladimir Prus-3
On 03/20/2015 04:22 AM, Bob Rossi wrote:

> Hi,
>
> I'm trying to determine if GDB/MI has the capability of accepting and
> working on multiple commands at once?
>
> For instance, if I run these commands,
>      (gdb)
>      123-interpreter-exec console "p argc"
>      ~"$3 = 1"
>      ~"\n"
>      123^done
>      (gdb)
>      234-interpreter-exec console "p argv[1]"
>      ~"$4 = 0x0\n"
>      234^done
>
> Is there any mode in which the command,
>      234-interpreter-exec console "p argv[1]"
> will be worked on before
>      123-interpreter-exec console "p argc"
> is finished?
>
> The implication is that i'm expecting to have at most 1 command active
> with GDB at a time. I'm curious if there is a situation where a front
> end could have many active commands at a time. By active I mean,
> I issue several commands, and then some time later, I get a response
> on each of these, in any order.

Bob,

it is not possible with the current GDB. All of the commands are executed in the single
thread GDB has, in the order they were received.

It is possible, in theory, that somebody will require GDB in node.js, or introduce asynchronous
operation using boost.asio or similar, but that's quite unlikely scenario.

--
Vladimir Prus
CodeSourcery / Mentor Embedded
http://vladimirprus.com

Reply | Threaded
Open this post in threaded view
|

RE: Can gdbmi process many commands at once?

Marc Khouzam
> From: [hidden email] [[hidden email]] on behalf of Vladimir Prus [[hidden email]]
> Sent: March 20, 2015 1:40 AM
> To: [hidden email]
> Subject: Re: Can gdbmi process many commands at once?
>
> On 03/20/2015 04:22 AM, Bob Rossi wrote:
> > Hi,
> >
> > I'm trying to determine if GDB/MI has the capability of accepting and
> > working on multiple commands at once?
> >
> > For instance, if I run these commands,
> >      (gdb)
> >      123-interpreter-exec console "p argc"
> >      ~"$3 = 1"
> >      ~"\n"
> >      123^done
> >      (gdb)
> >      234-interpreter-exec console "p argv[1]"
> >      ~"$4 = 0x0\n"
> >      234^done
> >
> > Is there any mode in which the command,
> >      234-interpreter-exec console "p argv[1]"
> > will be worked on before
> >      123-interpreter-exec console "p argc"
> > is finished?
> >
> > The implication is that i'm expecting to have at most 1 command active
> > with GDB at a time. I'm curious if there is a situation where a front
> > end could have many active commands at a time. By active I mean,
> > I issue several commands, and then some time later, I get a response
> > on each of these, in any order.
>
> Bob,
>
> it is not possible with the current GDB. All of the commands are executed in the single
> thread GDB has, in the order they were received.
>
> It is possible, in theory, that somebody will require GDB in node.js, or introduce asynchronous
> operation using boost.asio or similar, but that's quite unlikely scenario.

Eclipse, for example, is dependent on MI commands being processed as they are
sent.  It allows the front-end to send multiple commands at once (Eclipse goes up to 3) without
worrying about it causing problems of ordering.

Marc