stuck stuck - 2 months ago 24
C Question

command to suspend a thread with GDB

I'm a little new to GDB. I'm hoping someone can help me with something that should be quite simple, I've used Google/docs but I'm just missing something.

What is the 'normal' way folks debug threaded apps with GDB? I'm using pthreads. I'm wanting to watch only one thread - the two options I see are

a) tell the debugger somehow to attach to a particular thread, such that stepping wont result in jumping threads on each context switch

b) tell the debugger to suspend/free any 'uninteresting' threads

I'd prefer to go route b) - reading the help for GDB I dont see a command for this, tips?

Answer

See documentation for set scheduler-locking on.

Beware: if you suspend other threads, and if one of them holds a lock, and if your interesting thread needs that lock at some point while stepping, you'll deadlock.

What is the 'normal' way folks debug threaded apps

You can never debug thread correctness, you can only design it in. In my experience, most of debugging of threaded apps is putting in assertions, and examining state of the world when one of the assertions is violated.