Šimon Tóth
Šimon Tóth

Reputation: 36433

GDB: breakpoint in inferior process

I have a network software that I need to debug. It forks at multiple places and I need to debug one particular function handling one particular request.

Is there any way to setup a global breakpoint that would be caught even when it is in an inferior process?

I cannot use follow-fork-mode child because this will follow the first request, not the one I need to debug.

Upvotes: 3

Views: 2130

Answers (1)

Tom Tromey
Tom Tromey

Reputation: 22519

One way to do this is to have gdb remain attached to all the processes. Then you would set your breakpoint and run the program as usual; the breakpoint would fire in any sub-process that happened to hit that location. You can use breakpoint conditions to try to reduce the number of hits.

To put gdb into multi-inferior mode, I use this:

set detach-on-fork off
set non-stop on
set pagination off

Depending on your version of gdb, you might also need set target-async on.

This mode can be a bit peculiar to work in. For example, when one thread stops, the other keep going. Also, breakpoint stops are reported, but not always obvious; and I think gdb doesn't immediately switch to the stopping thread (this may have changed in gdb git, I forget).

Upvotes: 6

Related Questions