Re: Tools to debug multiple cores/processes at the same time?

Andrew Burgess <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
* Paul Smith via Gdb <[email protected]> [2021-08-18 15:55:57 -0400]:

> In my environment I'm working on a distributed system where the same
> process is running on a number of different systems.  The way these
> processes work is that they should all have (approximately) the same
> set of in-memory content at the same time.
> 
> Our test environment is set up so that if something "bad" happens, we
> SIGABRT all the processes on all the systems, so I often end up with 4,
> 5, 6, or more core files, all from the same process, with approximately
> the same in-memory content (obviously not identical addresses but the
> same structure) taken at about the same time.
> 
> The host systems can be assumed, at least initially, to be identical so
> no issue with different system libraries etc.
> 
> What would be really useful is for me to be able to open all these
> cores at the same time, controlled with a single UI (CLI prompt is
> fine), and be able to both (a) run commands that manipulate a single
> core, and also (b) run commands which manipulate all core files at
> once.
> 
> That would include, for example, setting convenience variables locally
> for each core, but then running the same command that might use those
> variables on every core and getting back the results.
> 
> I'm not really sure how this might work best: maybe a separate terminal
> per core file and one "controlling" terminal that I would enter
> commands into, or even commands run one after the other in the same
> terminal with some kind of header.
> 
> Don't know.  I can imagine multiple ways it might work.
> 
> What I'm really wondering is, has anyone heard of something like this,
> or is there any support (even partial support) for something like this
> in GDB today?  I get that it seems like a somewhat specialized request.
> 
> Debugging multiple live processes at the same time would also be great,
> of course.

I'm going to suggest something a little different.

Sometimes I need to debug the same thing running in two "almost"
identical setups, where in one case something will go wrong, and in
another everything's fine.  I start up two GDB sessions, and want to
send the same commands to each GDB until I find where the two systems
start to diverge.

I make use of a terminal call Terminator[1], this terminal allows me
to place multiple terminals into a single "group" and broadcast
keystrokes to every terminal in that group.  I can always pull a
terminal out of the group and interact with one session alone, then
place it back into the group, so long as I leave it in a consistent
state with the other group members I can continue to debug them all in
sync.

I'm sure there are other terminals that must offer this functionality.

The suggestions from others for multi-target and/or custom python
commands are all good too, but that above approach has always been
good enough for my needs, and might be of use to you.

Thanks,
Andrew

[1] https://terminator-gtk3.readthedocs.io/en/latest/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.