From: Eli Zaretskii <eliz@gnu.org>
To: gdb-patches@sourceware.org
Subject: Re: [RFA] Thread exit messages on MS-Windows
Date: Sun, 28 Apr 2013 16:24:00 -0000 [thread overview]
Message-ID: <838v44tnf8.fsf@gnu.org> (raw)
In-Reply-To: <83obd1tyi7.fsf@gnu.org>
> Date: Fri, 26 Apr 2013 12:46:56 +0300
> From: Eli Zaretskii <eliz@gnu.org>
>
> This is from the node "Threads" of the manual:
>
> `set print thread-events'
> `set print thread-events on'
> `set print thread-events off'
> The `set print thread-events' command allows you to enable or
> disable printing of messages when GDB notices that new threads have
> started or that threads have exited. By default, these messages
> will be printed if detection of these events is supported by the
> target. Note that these messages cannot be disabled on all
> targets.
>
> However, debugging MinGW programs on MS-Windows, I see only messages
> about new threads, like this:
>
> [New Thread 6184.0x1bbc]
> [New Thread 6184.0x13c8]
> [New Thread 6184.0x1a3c]
>
> I never see any messages about threads that exited, although examining
> the details of the program being debugged, I clearly see that most of
> them did.
>
> Does that mean that GDB doesn't support thread exit messages on
> Windows? What feature(s) are missing for this support to be
> available?
>
> I can get thread exit messages from windows-nat.c such as
>
> [Deleting Thread 8112.0x1494]
> [Deleting Thread 8112.0x11d0]
>
> if I "set verbose on", but that mode causes GDB to become much more
> talkative than I'd like.
>
> In thread.c, I see that add_thread_with_info will announce new threads
> if print_thread_events is non-zero, but I see no similar announcement
> in delete_thread or its subroutines. Is this supposed to be handled
> by target-specific back ends? I see something like that in, e.g.,
> linux-nat.c and in inf-ttrace.c, but I'm unsure whether that is a
> conclusive evidence.
>
> If indeed thread deletion should be announced by the target, why this
> asymmetry with thread creation?
>
> TIA for any help or info.
No one replied, so I'm now converting this into an RFA. The patch
below causes GDB on Windows to display thread exit messages like this:
[Thread 5920.0x13e4 exited with code 0]
[Thread 5920.0x12d0 exited with code 0]
[Thread 5920.0x1cbc exited with code 0]
OK to commit this (on the trunk)?
2013-04-27 Eli Zaretskii <eliz@gnu.org>
* windows-nat.c (windows_delete_thread): Accept an additional
argument, the thread's exit code, and announce thread death when
print_thread_events is non-zero and we are deleting a thread that
is not the main thread.
(get_windows_debug_event): Pass thread exit code to
windows_delete_thread.
--- gdb/windows-nat.c~0 2013-02-27 21:42:26.000000000 +0200
+++ gdb/windows-nat.c 2013-04-27 10:46:32.937875000 +0300
@@ -386,7 +386,7 @@ windows_init_thread_list (void)
/* Delete a thread from the list of threads. */
static void
-windows_delete_thread (ptid_t ptid)
+windows_delete_thread (ptid_t ptid, DWORD exit_code)
{
thread_info *th;
DWORD id;
@@ -397,6 +397,9 @@ windows_delete_thread (ptid_t ptid)
if (info_verbose)
printf_unfiltered ("[Deleting %s]\n", target_pid_to_str (ptid));
+ else if (print_thread_events && id != main_thread_id)
+ printf_unfiltered (_("[%s exited with code %d]\n"),
+ target_pid_to_str (ptid), exit_code);
delete_thread (ptid);
for (th = &thread_head;
@@ -1496,7 +1499,8 @@ get_windows_debug_event (struct target_o
if (current_event.dwThreadId != main_thread_id)
{
windows_delete_thread (ptid_build (current_event.dwProcessId, 0,
- current_event.dwThreadId));
+ current_event.dwThreadId),
+ current_event.u.ExitThread.dwExitCode);
th = &dummy_thread_info;
}
break;
@@ -1513,7 +1517,7 @@ get_windows_debug_event (struct target_o
current_process_handle = current_event.u.CreateProcessInfo.hProcess;
if (main_thread_id)
windows_delete_thread (ptid_build (current_event.dwProcessId, 0,
- main_thread_id));
+ main_thread_id), 0);
main_thread_id = current_event.dwThreadId;
/* Add the main thread. */
th = windows_add_thread (ptid_build (current_event.dwProcessId, 0,
next parent reply other threads:[~2013-04-27 7:59 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <83obd1tyi7.fsf@gnu.org>
2013-04-28 16:24 ` Eli Zaretskii [this message]
2013-04-29 4:32 ` Eli Zaretskii
2013-04-29 8:21 ` Corinna Vinschen
2013-04-29 8:38 ` Eli Zaretskii
2013-04-29 5:09 ` asmwarrior
2013-04-29 6:30 ` Eli Zaretskii
2013-04-29 6:30 ` asmwarrior
2013-04-29 6:30 ` Eli Zaretskii
2013-04-29 17:31 ` Joel Brobecker
2013-04-29 20:27 ` Eli Zaretskii
2013-04-30 11:51 ` Joel Brobecker
2013-04-29 19:26 ` Tom Tromey
2013-04-30 0:58 ` Eli Zaretskii
2013-04-30 11:38 ` Joel Brobecker
[not found] ` <83obcwoubz.fsf@gnu.org>
2013-05-01 5:14 ` Joel Brobecker
2013-05-04 13:40 ` Eli Zaretskii
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=838v44tnf8.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=gdb-patches@sourceware.org \
/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