gdb: print thread names in thread apply command output
This makes the thread apply command print the thread's name. The use of target_pid_to_str is replaced by thread_target_id_str, which provides the same output as "info threads". Before: (gdb) thread apply 2 bt Thread 2 (Thread 0x7fd245602700 (LWP 3837)): [...] After: (gdb) thread apply 2 bt Thread 2 (Thread 0x7fd245602700 (LWP 3837) "HT cleanup"): [...] The thread's description header is pre-computed before running the command since the command may change the selected inferior. This is not permitted by thread_target_id_str as target_thread_name asserts that `info->inf == current_inferior ()`. This situation arises in the `gdb.threads/threadapply.exp` test which kills and removes the inferior as part of a "thread apply" command. gdb/ChangeLog: * thread.c (thr_try_catch_cmd): Print thread name.
This commit is contained in:
parent
d4c9a4f87d
commit
b65ce56541
@ -1,3 +1,7 @@
|
||||
2020-02-26 Jérémie Galarneau <jeremie.galarneau@efficios.com>
|
||||
|
||||
* thread.c (thr_try_catch_cmd): Print thread name.
|
||||
|
||||
2020-02-26 Simon Marchi <simon.marchi@efficios.com>
|
||||
|
||||
* dwarf2/loc.h (dwarf2_fetch_die_loc_sect_off,
|
||||
|
16
gdb/thread.c
16
gdb/thread.c
@ -1563,6 +1563,14 @@ thr_try_catch_cmd (thread_info *thr, const char *cmd, int from_tty,
|
||||
const qcs_flags &flags)
|
||||
{
|
||||
switch_to_thread (thr);
|
||||
|
||||
/* The thread header is computed before running the command since
|
||||
the command can change the inferior, which is not permitted
|
||||
by thread_target_id_str. */
|
||||
std::string thr_header =
|
||||
string_printf (_("\nThread %s (%s):\n"), print_thread_id (thr),
|
||||
thread_target_id_str (thr).c_str ());
|
||||
|
||||
try
|
||||
{
|
||||
std::string cmd_result = execute_command_to_string
|
||||
@ -1570,9 +1578,7 @@ thr_try_catch_cmd (thread_info *thr, const char *cmd, int from_tty,
|
||||
if (!flags.silent || cmd_result.length () > 0)
|
||||
{
|
||||
if (!flags.quiet)
|
||||
printf_filtered (_("\nThread %s (%s):\n"),
|
||||
print_thread_id (thr),
|
||||
target_pid_to_str (inferior_ptid).c_str ());
|
||||
printf_filtered ("%s", thr_header.c_str ());
|
||||
printf_filtered ("%s", cmd_result.c_str ());
|
||||
}
|
||||
}
|
||||
@ -1581,9 +1587,7 @@ thr_try_catch_cmd (thread_info *thr, const char *cmd, int from_tty,
|
||||
if (!flags.silent)
|
||||
{
|
||||
if (!flags.quiet)
|
||||
printf_filtered (_("\nThread %s (%s):\n"),
|
||||
print_thread_id (thr),
|
||||
target_pid_to_str (inferior_ptid).c_str ());
|
||||
printf_filtered ("%s", thr_header.c_str ());
|
||||
if (flags.cont)
|
||||
printf_filtered ("%s\n", ex.what ());
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user