diff options
author | Doug Evans <dje@google.com> | 2011-11-04 16:45:13 +0000 |
---|---|---|
committer | Doug Evans <dje@google.com> | 2011-11-04 16:45:13 +0000 |
commit | 0a1c4d10f1054325af840fc780a121ed10d69e63 (patch) | |
tree | 602d1865bff947c8f3abe515da26de01dda5be70 | |
parent | a1d705ee1b50481b05809413906cc5955f3b2730 (diff) | |
download | gdb-0a1c4d10f1054325af840fc780a121ed10d69e63.zip gdb-0a1c4d10f1054325af840fc780a121ed10d69e63.tar.gz gdb-0a1c4d10f1054325af840fc780a121ed10d69e63.tar.bz2 |
* utils.c: #include "timeval-utils.h".
(cmd_stats): Rename start_time to start_cpu_time.
New member start_wall_time.
(report_command_stats): Report wall time.
(make_command_stats_cleanup): Record start wall time.
doc/
* gdb.texinfo (Maintenance Commands): Update docs of "maint time".
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/doc/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/doc/gdb.texinfo | 15 | ||||
-rw-r--r-- | gdb/utils.c | 21 |
4 files changed, 36 insertions, 12 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e3e7826..f527f20 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2011-11-04 Doug Evans <dje@google.com> + + * utils.c: #include "timeval-utils.h". + (cmd_stats): Rename start_time to start_cpu_time. + New member start_wall_time. + (report_command_stats): Report wall time. + (make_command_stats_cleanup): Record start wall time. + 2011-11-04 Tom Tromey <tromey@redhat.com> * cp-namespace.c (cp_lookup_symbol_imports): Reindent. diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 9beca6f..2a23823 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,7 @@ +2011-11-04 Doug Evans <dje@google.com> + + * gdb.texinfo (Maintenance Commands): Update docs of "maint time". + 2011-11-03 Tom Tromey <tromey@redhat.com> * gdb.texinfo (Stopping): Add menu entry. diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 93450c6..520360f 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -32991,13 +32991,16 @@ switch (@pxref{Mode Options}). @kindex maint time @cindex time of command execution @item maint time -Control whether to display the execution time for each command. If -set to a nonzero value, @value{GDBN} will display how much time it +Control whether to display the execution time of @value{GDBN} for each command. +If set to a nonzero value, @value{GDBN} will display how much time it took to execute each command, following the command's own output. -The time is not printed for the commands that run the target, since -there's no mechanism currently to compute how much time was spend -by @value{GDBN} and how much time was spend by the program been debugged. -it's not possibly currently +Both CPU time and wallclock time are printed. +Printing both is useful when trying to determine whether the cost is +CPU or, e.g., disk/network, latency. +Note that the CPU time printed is for @value{GDBN} only, it does not include +the execution time of the inferior because there's no mechanism currently +to compute how much time was spent by @value{GDBN} and how much time was +spent by the program been debugged. This can also be requested by invoking @value{GDBN} with the @option{--statistics} command-line switch (@pxref{Mode Options}). diff --git a/gdb/utils.c b/gdb/utils.c index 5c03e71..008baac 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -45,6 +45,7 @@ #endif #include <signal.h> +#include "timeval-utils.h" #include "gdbcmd.h" #include "serial.h" #include "bfd.h" @@ -691,7 +692,8 @@ static int display_space; struct cmd_stats { int msg_type; - long start_time; + long start_cpu_time; + struct timeval start_wall_time; long start_space; }; @@ -723,12 +725,18 @@ report_command_stats (void *arg) if (display_time) { - long cmd_time = get_run_time () - start_stats->start_time; + long cmd_time = get_run_time () - start_stats->start_cpu_time; + struct timeval now_wall_time, delta_wall_time; + + gettimeofday (&now_wall_time, NULL); + timeval_sub (&delta_wall_time, + &now_wall_time, &start_stats->start_wall_time); printf_unfiltered (msg_type == 0 - ? _("Startup time: %ld.%06ld\n") - : _("Command execution time: %ld.%06ld\n"), - cmd_time / 1000000, cmd_time % 1000000); + ? _("Startup time: %ld.%06ld (cpu), %ld.%06ld (wall)\n") + : _("Command execution time: %ld.%06ld (cpu), %ld.%06ld (wall)\n"), + cmd_time / 1000000, cmd_time % 1000000, + delta_wall_time.tv_sec, delta_wall_time.tv_usec); } if (display_space) @@ -764,7 +772,8 @@ make_command_stats_cleanup (int msg_type) #endif new_stat->msg_type = msg_type; - new_stat->start_time = get_run_time (); + new_stat->start_cpu_time = get_run_time (); + gettimeofday (&new_stat->start_wall_time, NULL); return make_cleanup_dtor (report_command_stats, new_stat, xfree); } |