* utils.c (debug_timestamp): New.

(vfprintf_unfiltered): Print timestamps if requested.
	(show_debug_timestamp): New.
	(initialize_utils): Register "set debug timestamp".
	* NEWS: Mention "set debug timestamp".  Add GDB 6.8 section.

	* gdb.texinfo (Debugging Output): Document "set debug timestamp".
This commit is contained in:
Daniel Jacobowitz 2008-02-27 20:50:49 +00:00
parent b40e7bf371
commit 75feb17dd5
3 changed files with 50 additions and 1 deletions

View File

@ -1,7 +1,15 @@
What has changed in GDB?
(Organized release by release)
*** Changes since GDB 6.7
*** Changes since GDB 6.8
* New commands
set debug timetstamp
show debug timestamp
Display timestamps with GDB debugging output.
*** Changes in GDB 6.8
* New native configurations

View File

@ -16387,6 +16387,14 @@ until the next time you connect to a target or use the @code{run} command.
@item show debug target
Displays the current state of displaying @value{GDBN} target debugging
info.
@item set debug timestamp
@cindex timestampping debugging info
Turns on or off display of timestamps with @value{GDBN} debugging info.
When enabled, seconds and microseconds are displayed before each debugging
message.
@item show debug timestamp
Displays the current state of displaying timestamps with @value{GDBN}
debugging info.
@item set debugvarobj
@cindex variable object debugging info
Turns on or off display of @value{GDBN} variable object debugging

View File

@ -63,6 +63,9 @@
#include "readline/readline.h"
#include <sys/time.h>
#include <time.h>
#if !HAVE_DECL_MALLOC
extern PTR malloc (); /* OK: PTR */
#endif
@ -92,6 +95,10 @@ static void prompt_for_continue (void);
static void set_screen_size (void);
static void set_width (void);
/* A flag indicating whether to timestamp debugging messages. */
static int debug_timestamp = 0;
/* Chain of cleanup actions established with make_cleanup,
to be executed if an error happens. */
@ -2121,6 +2128,16 @@ vfprintf_unfiltered (struct ui_file *stream, const char *format, va_list args)
linebuffer = xstrvprintf (format, args);
old_cleanups = make_cleanup (xfree, linebuffer);
if (debug_timestamp && stream == gdb_stdlog)
{
struct timeval tm;
char *timestamp;
gettimeofday (&tm, NULL);
timestamp = xstrprintf ("%ld:%ld ", (long) tm.tv_sec, (long) tm.tv_usec);
make_cleanup (xfree, timestamp);
fputs_unfiltered (timestamp, stream);
}
fputs_unfiltered (linebuffer, stream);
do_cleanups (old_cleanups);
}
@ -2437,6 +2454,13 @@ pagination_off_command (char *arg, int from_tty)
{
pagination_enabled = 0;
}
static void
show_debug_timestamp (struct ui_file *file, int from_tty,
struct cmd_list_element *c, const char *value)
{
fprintf_filtered (file, _("Timestamping debugging messages is %s.\n"), value);
}
void
@ -2497,6 +2521,15 @@ Show demangling of C++/ObjC names in disassembly listings."), NULL,
NULL,
show_asm_demangle,
&setprintlist, &showprintlist);
add_setshow_boolean_cmd ("timestamp", class_maintenance,
&debug_timestamp, _("\
Set timestamping of debugging messages."), _("\
Show timestamping of debugging messages."), _("\
When set, debugging messages will be marked with seconds and microseconds."),
NULL,
show_debug_timestamp,
&setdebuglist, &showdebuglist);
}
/* Machine specific function to handle SIGWINCH signal. */