This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: Debugging Multiple Inferiors
- From: Pedro Alves <palves at redhat dot com>
- To: florent vion <florent dot vion at gmail dot com>, gdb at sourceware dot org
- Date: Thu, 7 Sep 2017 13:50:34 +0100
- Subject: Re: Debugging Multiple Inferiors
- Authentication-results: sourceware.org; auth=none
- Authentication-results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com
- Authentication-results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=palves at redhat dot com
- Dmarc-filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 4AE6961461
- References: <CAPkd_ax2i+pR98UXAtEbsE_O4KMs6UQoSzQp7S4Si5v4x7V6=A@mail.gmail.com>
On 09/07/2017 01:09 PM, florent vion wrote:
> Hi the experts,
>
> Do you know if it is possible to debug two cortex-m in parallel with
> one gdb session using inferiors?
Interesting! And apropos too. If possible, I'd love to
hear more about the use case.
It's not possible today, but hopefully that won't be for too long.
See below.
> Do I need to enable the non stop mode if I use the remote protocol?
...
> It seems that the remote target behaves as an Highlander, "there can
> be only one"...
Indeed. However, I've actually been working on lifting
that limitation.
You can find my WIP branch here:
https://github.com/palves/gdb/commits/palves/multi-target
It's a WIP, still with a couple of quick hacks in place, but
it's good enough to debug multiple remote connections at the
same time using that, provided the remote stubs support the
same set of remote protocol extensions (which is not an
issue if you have two exactly equal boards) and provided
the remote target/stub supports non-stop mode. If you want
to give it a try, know that user-visible all-stop mode does
work, however you'll need to do "maint set target-non-stop on"
before connecting to force the remote connection itself
to use non-stop mode.
I've been focusing on "target extended-remote" (+ "run"), but
I expect that "target remote" should work too. (If it doesn't
yet, I'll want to fix it.)
FYI, if you're curious about implementation details, earlier
attempts at multi-target are described here:
https://sourceware.org/gdb/wiki/MultiTarget
While my new implementation is different/new, a good part
of the info on that page is still relevant, since it lists
the problem that need to be addressed. Perhaps the main
difference in my approach is that nowadays GDB is a C++ program
and I'm making target_ops a C++ class hierarchy, and that
I'm not extending PTID, but instead making core of gdb use
thread_info/inferior/target_ops pointers more.
Thanks,
Pedro Alves