This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: GDB breakpoint implementation for multithreaded programms


On 05/10/2014 06:56 PM, Sofia wrote:
I'm writing my GDB stub and trying to set breakpoints on different threads.
When I don't ask GDB about the number of threads, It works fine as a single-
threaded application and breakpoints are set correctly. But when I enter -
'info threads', something strange happens.

Firstly, GDB reads the contents of all threads' registers(it's OK). Then I
enter 'continue' and see that breakpoints are not set at all threads my
program has. I don't understand why, but the packet Z0(breakpoint packet) is
only sent to inactive thread. The documentation says that if the thread id is
not specified, breakpoints will be set at all threads. What's wrong with this
or where can I read about such GDB behavior?




Is this a software breakpoint (Z0/z0) or a hardware breakpoint we are talking about?

A software breakpoint should be valid for all threads if the threads are executing a shared piece of code. If these breakpoints are not triggering, we may have a bug somewhere.

For hardware breakpoints, the target code (in this case, the remote stub) is responsible for replicating the hardware breakpoint settings (register contents) to all threads upon their creation.

What version of GDB are you using?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]