From: Nick Roberts <nickrob@snap.net.nz>
To: Eli Zaretskii <eliz@gnu.org>,
brobecker@adacore.com, gdb-patches@sources.redhat.com
Subject: Re: [PATCH] New annotation for threads
Date: Mon, 19 May 2008 12:39:00 -0000 [thread overview]
Message-ID: <18479.62120.536436.427524@kahikatea.snap.net.nz> (raw)
In-Reply-To: <18478.48682.13900.951343@kahikatea.snap.net.nz>
> I plan to represent this patch with a test shortly...
Here it is with documentation. This is pretty much what I submitted
originally. Since then the new_thread observer has been moved to
add_thread_silent and, as Daniel points out, might be called at other locations
or change in the future. With the benefit of hindsight, I think these are good
reasons not to use the observer for annotations.
--
Nick http://www.inet.net.nz/~nickrob
2008-05-18 Nick Roberts <nickrob@snap.net.nz>
* annotate.c (annotate_new_thread): New function for new-thread
annotation.
* annotate.h: (annotate_new_thread): New extern.
* thread.c (add_thread_with_info): Use it.
* Makefile.in (thread.o): Add dependency on annotate.h.
2008-05-18 Nick Roberts <nickrob@snap.net.nz>
* gdb.base/annota1.exp: Test for new annotation.
2008-05-18 Nick Roberts <nickrob@snap.net.nz>
* annotate.texinfo (Multi-threaded Apps): New node for new annotation.
Index: annotate.c
===================================================================
RCS file: /cvs/src/src/gdb/annotate.c,v
retrieving revision 1.15
diff -p -u -r1.15 annotate.c
--- annotate.c 1 Jan 2008 22:53:09 -0000 1.15
+++ annotate.c 18 May 2008 09:07:38 -0000
@@ -234,6 +234,15 @@ annotate_frames_invalid (void)
}
void
+annotate_new_thread (void)
+{
+ if (annotation_level > 1)
+ {
+ printf_unfiltered (("\n\032\032new-thread\n"));
+ }
+}
+
+void
annotate_field_begin (struct type *type)
{
if (annotation_level == 2)
Index: annotate.h
===================================================================
RCS file: /cvs/src/src/gdb/annotate.h,v
retrieving revision 1.9
diff -p -u -r1.9 annotate.h
--- annotate.h 1 Jan 2008 22:53:09 -0000 1.9
+++ annotate.h 18 May 2008 09:07:38 -0000
@@ -43,6 +43,7 @@ extern void annotate_record (void);
extern void annotate_breakpoints_table_end (void);
extern void annotate_frames_invalid (void);
+extern void annotate_new_thread (void);
struct type;
Index: thread.c
===================================================================
RCS file: /cvs/src/src/gdb/thread.c,v
retrieving revision 1.69
diff -p -u -r1.69 thread.c
--- thread.c 9 May 2008 08:14:47 -0000 1.69
+++ thread.c 18 May 2008 09:07:39 -0000
@@ -40,6 +40,7 @@
#include <signal.h>
#include "ui-out.h"
#include "observer.h"
+#include "annotate.h"
/* Definition of struct thread_info exported to gdbthread.h */
@@ -141,7 +142,8 @@ add_thread_with_info (ptid_t ptid, struc
if (print_thread_events)
printf_unfiltered (_("[New %s]\n"), target_pid_to_str (ptid));
-
+
+ annotate_new_thread ();
return result;
}
Index: Makefile.in
===================================================================
RCS file: /cvs/src/src/gdb/Makefile.in,v
retrieving revision 1.1021
diff -p -u -r1.1021 Makefile.in
--- Makefile.in 16 May 2008 12:51:21 -0000 1.1021
+++ Makefile.in 18 May 2008 09:07:41 -0000
@@ -2932,7 +2932,7 @@ target-memory.o: target-memory.c $(defs_
thread.o: thread.c $(defs_h) $(symtab_h) $(frame_h) $(inferior_h) \
$(environ_h) $(value_h) $(target_h) $(gdbthread_h) $(exceptions_h) \
$(command_h) $(gdbcmd_h) $(regcache_h) $(gdb_h) $(gdb_string_h) \
- $(ui_out_h) $(observer_h)
+ $(ui_out_h) $(observer_h) $(annotate_h)
top.o: top.c $(defs_h) $(gdbcmd_h) $(call_cmds_h) $(cli_cmds_h) \
$(cli_script_h) $(cli_setshow_h) $(cli_decode_h) $(symtab_h) \
$(inferior_h) $(exceptions_h) $(target_h) $(breakpoint_h) \
Index: testsuite/gdb.base/annota1.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/annota1.exp,v
retrieving revision 1.29
diff -p -u -r1.29 annota1.exp
--- testsuite/gdb.base/annota1.exp 16 May 2008 12:48:08 -0000 1.29
+++ testsuite/gdb.base/annota1.exp 18 May 2008 09:07:42 -0000
@@ -490,6 +490,39 @@ if [ regexp "core not found" $exec_outpu
}
}
+set testfile "watch_thread_num"
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+set gdb_prompt $old_gdb_prompt
+
+if { ![get_compiler_info ${binfile}] && [gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug nowarnings}] == "" } {
+
+ gdb_exit
+ gdb_start
+ gdb_reinitialize_dir $srcdir/$subdir
+ gdb_load ${binfile}
+ if { ![runto main] } then {
+ fail "run to main"
+ return
+ }
+
+ set gdb_prompt \
+ "\r\n\032\032pre-prompt\r\n$gdb_prompt \r\n\032\032prompt\r\n"
+
+ send_gdb "set annotate 2\n"
+ gdb_expect {
+ -re "set annotate 2\r\n$gdb_prompt$" {}
+ }
+
+ send_gdb "next 2\n"
+ gdb_expect {
+ -re ".*\032\032new-thread" {
+ pass "new thread"
+ }
+ timeout { fail "new thread (timeout)" }
+ }
+}
+
# restore the original prompt for the rest of the testsuite
set gdb_prompt $old_gdb_prompt
Index: doc/annotate.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/annotate.texinfo,v
retrieving revision 1.7
diff -p -u -r1.7 annotate.texinfo
--- doc/annotate.texinfo 20 Jan 2007 16:51:56 -0000 1.7
+++ doc/annotate.texinfo 18 May 2008 09:07:42 -0000
@@ -85,6 +85,7 @@ This is Edition @value{EDITION}, @value{
* Annotations for Running::
Whether the program is running, how it stopped, etc.
* Source Annotations:: Annotations describing source code.
+* Multi-threaded Apps:: An annotation that reports multi-threadedness.
* GNU Free Documentation License::
@end menu
@@ -820,6 +821,21 @@ source which is being displayed. @var{a
followed by one or more lowercase hex digits (note that this does not
depend on the language).
+@node Multi-threaded Apps
+@chapter Multi-threaded Applications
+@cindex annotations for multi-threaded apps
+
+@findex new-thread
+The following annotation reports that the application being debugged is
+multi-threaded.
+
+@smallexample
+^Z^Znew-thread
+@end smallexample
+
+This annotation is issued once for each thread that is created apart from
+the main thread, which is not reported.
+
@raisesections
@include fdl.texi
@lowersections
next prev parent reply other threads:[~2008-05-18 9:11 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-18 16:06 Nick Roberts
2008-04-29 4:47 ` Joel Brobecker
2008-04-29 14:19 ` Nick Roberts
2008-05-01 18:18 ` Joel Brobecker
2008-05-01 18:44 ` Daniel Jacobowitz
2008-05-01 23:31 ` Nick Roberts
2008-05-01 23:37 ` Joel Brobecker
2008-05-02 0:07 ` Nick Roberts
2008-05-02 5:50 ` Joel Brobecker
2008-05-02 10:41 ` Eli Zaretskii
2008-05-17 15:51 ` Nick Roberts
2008-05-17 19:15 ` Stan Shebs
2008-05-17 21:18 ` Eli Zaretskii
2008-05-18 3:20 ` Bob Rossi
2008-05-18 9:11 ` Bob Rossi
2008-05-18 17:44 ` Eli Zaretskii
2008-05-19 8:48 ` Joel Brobecker
2008-05-19 9:09 ` Nick Roberts
2008-05-19 9:44 ` Eli Zaretskii
2008-05-19 12:39 ` Nick Roberts [this message]
2008-05-19 13:23 ` Eli Zaretskii
2008-05-20 15:27 ` Joel Brobecker
2008-05-20 16:10 ` Nick Roberts
2008-05-20 16:43 ` Nick Roberts
2008-05-20 18:09 ` Joel Brobecker
2008-05-21 3:55 ` Nick Roberts
2008-05-21 7:22 ` Joel Brobecker
2008-05-20 22:21 ` Eli Zaretskii
2008-05-20 22:54 ` Joel Brobecker
2008-05-21 3:26 ` Eli Zaretskii
2008-05-21 9:33 ` Joel Brobecker
2008-05-21 15:11 ` Nick Roberts
2008-05-21 15:14 ` Joel Brobecker
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=18479.62120.536436.427524@kahikatea.snap.net.nz \
--to=nickrob@snap.net.nz \
--cc=brobecker@adacore.com \
--cc=eliz@gnu.org \
--cc=gdb-patches@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