From: Nick NoSpam <nicknospam@optonline.net>
To: gdb@sources.redhat.com
Subject: breakpoints and pthreads
Date: Thu, 20 May 2004 01:37:00 -0000 [thread overview]
Message-ID: <1085016786.25625.825.camel@nimble.325Bayport> (raw)
Hi,
I started using gdb a few months ago on RedHat (originally installed as
version 7.2). While doing so, my little test program--which spawns a
thread--would stop execution in all threads (the main process and the
spawned thread) when a breakpoint was hit. I read the documentation and
this is appropriate behavior:
Section 5.4 Stopping and starting multi-threaded programs
...
Whenever your program stops under GDB for any reason, *all* threads
of execution stop, not just the current thread.
I recently switched to Gentoo which uses newer versions of practically
all libraries than my RH 7.2. When I compile and run the same program
now, the spawned thread does not stop when a breakpoint is hit.
Here is the simple program:
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
static void *wait_thread(void *arg);
int main(int argc, char *argv[])
{
printf("[ main ] Program enter.\n");
pthread_t t;
int res = pthread_create(&t, NULL, wait_thread, NULL);
if(res != 0)
{
printf("[ main ] Error creating wait thread!\n");
}
printf("[ main ] Going to sleep...\n");
sleep(3);
printf("[ main ] Exitting...\n");
return(0);
}
static void *wait_thread(void *arg)
{
while(1)
{
printf("[ wait_thread ] Waiting in thread\n");
sleep(1);
}
}
Compiled with:
gcc -g threadtest.c -o threadtest -lpthread
Here is a snippet of the debug session:
nick@nimble gdbtest $ gdb threadtest
GNU gdb 6.1
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and
you are welcome to change it and/or distribute copies of it under
certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for
details.
This GDB was configured as "i686-pc-linux-gnu"...Using host
libthread_db library "/lib/libthread_db.so.1".
(gdb) break main
Breakpoint 1 at 0x8048444: file threadtest.c, line 9.
(gdb) break 18
Breakpoint 2 at 0x8048488: file threadtest.c, line 18.
(gdb) run
Starting program: /home/nick/gdbtest/threadtest
Breakpoint 1, main (argc=1, argv=0xbffff6c4) at threadtest.c:9
9 printf("[ main ] Program enter.\n");
(gdb) n
[ main ] Program enter.
12 int res = pthread_create(&t, NULL, wait_thread, NULL);
(gdb) n
[ wait_thread ] Waiting in thread
Program received signal SIG32, Real-time event 32.
0x4002ba34 in pthread_getconcurrency () from /lib/libpthread.so.0
(gdb) [ wait_thread ] Waiting in thread
[ wait_thread ] Waiting in thread
[ wait_thread ] Waiting in thread
[ wait_thread ] Waiting in thread
[ wait_thread ] Waiting in thread
[ wait_thread ] Waiting in thread
[ wait_thread ] Waiting in thread
The thread's output "[ wait_thread ] Waiting in thread" continues to
print despite the debugger stopped (in main).
Version Info:
gdb: 6.1 (configured as "i686-pc-linux-gnu")
gcc: 3.3.2 (Thread model: posix, configured with --enable-threads=posix)
glibc: 2.3.2
kernel: 2.6.5 (vanilla)
Regards,
Nick
next reply other threads:[~2004-05-20 1:37 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-05-20 1:37 Nick NoSpam [this message]
2004-05-24 9:22 ` Nick NoSpam
2004-06-01 5:05 ` Nick NoSpam
2004-06-01 11:46 ` pthread type 1x1 or MxN MuthuKumar-15
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1085016786.25625.825.camel@nimble.325Bayport \
--to=nicknospam@optonline.net \
--cc=gdb@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox