This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Fri, Feb 27, 2009 at 11:56 AM, Doug Evans <dje@google.com> wrote: > On Fri, Feb 27, 2009 at 11:41 AM, Pedro Alves <pedro@codesourcery.com> wrote: >> Hi Doug, >> >> On Thursday 26 February 2009 18:41:07, Doug Evans wrote: >>> Hi. >>> >>> Printing the result of target_wait when "set debug infrun 1" is great, >>> but I've found I've needed the thread ID. >>> >>> The output line was getting a bit long, so I split it up. >>> There are other ways to split it up, but this works for me. >>> >> >> The downside of that, is that "set debug timespamp" will print >> a timestamp for each piece of the log, and any signal debug >> output in async mode will mingle up. Maybe do the printing to >> a mem_fileopen buffer, and then print that to stderr in one go? > > Ok, I'll print to mem_fileopen first, and then print in one go. > >> An issue I though would be desirable to avoid here, is calling >> target_pid_to_str, which isn't garanteed to not have side >> effects. > > That's unfortunate. Is that documented somewhere? > >> Introducing side effects when you enable debug >> output is undesirable. > > Yep. > >> Maybe print the ptid in raw form, say, >> like: (pid, lwp, tid)? OTOH, infrun debugging output has been >> doing that for years, so it's probably fine... > > Ya, there's LOTS of calls to target_pid_to_str for debugging output. > >> >>> Ok to check in? >>> >>> 2009-02-26 Doug Evans <dje@google.com> >>> >>> Include thread ID in target_wait debugging output. >>> * infrun.c (print_target_wait_results): New function. >>> (wait_for_inferior,fetch_inferior_event): Call it. >>> >>> Index: infrun.c >>> =================================================================== >>> RCS file: /cvs/src/src/gdb/infrun.c,v >>> retrieving revision 1.360 >>> diff -u -p -r1.360 infrun.c >>> --- infrun.c 25 Feb 2009 02:14:22 -0000 1.360 >>> +++ infrun.c 26 Feb 2009 18:34:57 -0000 >>> @@ -1737,6 +1737,30 @@ delete_step_thread_step_resume_breakpoin >>> delete_step_thread_step_resume_breakpoint (); >>> } >>> >>> +/* Pretty print the results of target_wait, for debugging purposes. */ >>> + >>> +static void >>> +print_target_wait_results (ptid_t waiton_ptid, ptid_t result_ptid, >>> + const struct target_waitstatus *ws) >>> +{ >>> + char *status_string = target_waitstatus_to_string (ws); >>> + >>> + fprintf_unfiltered (gdb_stdlog, >>> + "infrun: target_wait (%d", PIDGET (waiton_ptid)); >>> + if (PIDGET (waiton_ptid) != -1) >>> + fprintf_unfiltered (gdb_stdlog, >>> + " [%s]", target_pid_to_str (waiton_ptid)); >>> + fprintf_unfiltered (gdb_stdlog, ", status) =\n"); >>> + fprintf_unfiltered (gdb_stdlog, >>> + "infrun: %d [%s],\n", >>> + PIDGET (result_ptid), target_pid_to_str (result_ptid)); >>> + fprintf_unfiltered (gdb_stdlog, >>> + "infrun: %s\n", >>> + status_string); >>> + >>> + xfree (status_string); >>> +} >>> + >>> /* Wait for control to return from inferior to debugger. >>> >>> If TREAT_EXEC_AS_SIGTRAP is non-zero, then handle EXEC signals >>> @@ -1790,14 +1814,7 @@ wait_for_inferior (int treat_exec_as_sig >>> ecs->ptid = target_wait (waiton_ptid, &ecs->ws); >>> >>> if (debug_infrun) >>> - { >>> - char *status_string = target_waitstatus_to_string (&ecs->ws); >>> - fprintf_unfiltered (gdb_stdlog, >>> - "infrun: target_wait (%d, status) = %d, %s\n", >>> - PIDGET (waiton_ptid), PIDGET (ecs->ptid), >>> - status_string); >>> - xfree (status_string); >>> - } >>> + print_target_wait_results (waiton_ptid, ecs->ptid, &ecs->ws); >>> >>> if (treat_exec_as_sigtrap && ecs->ws.kind == TARGET_WAITKIND_EXECD) >>> { >>> @@ -1875,14 +1892,7 @@ fetch_inferior_event (void *client_data) >>> ecs->ptid = target_wait (waiton_ptid, &ecs->ws); >>> >>> if (debug_infrun) >>> - { >>> - char *status_string = target_waitstatus_to_string (&ecs->ws); >>> - fprintf_unfiltered (gdb_stdlog, >>> - "infrun: target_wait (%d, status) = %d, %s\n", >>> - PIDGET (waiton_ptid), PIDGET (ecs->ptid), >>> - status_string); >>> - xfree (status_string); >>> - } >>> + print_target_wait_results (waiton_ptid, ecs->ptid, &ecs->ws); >>> >>> if (non_stop >>> && ecs->ws.kind != TARGET_WAITKIND_IGNORE >>> >> >> How about this? 2009-02-27 Doug Evans <dje@google.com> Include thread ID in target_wait debugging output. * infrun.c (print_target_wait_results): New function. (wait_for_inferior,fetch_inferior_event): Call it.
Attachment:
gdb-090227-debug-target-wait-2.patch.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |