From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1464 invoked by alias); 20 Sep 2011 04:12:03 -0000 Received: (qmail 885 invoked by uid 22791); 20 Sep 2011 04:11:58 -0000 X-SWARE-Spam-Status: No, hits=-2.6 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RP_MATCHES_RCVD,SPF_HELO_PASS X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (74.125.121.67) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 20 Sep 2011 04:11:41 +0000 Received: from wpaz33.hot.corp.google.com (wpaz33.hot.corp.google.com [172.24.198.97]) by smtp-out.google.com with ESMTP id p8K4Bcqc026748 for ; Mon, 19 Sep 2011 21:11:39 -0700 Received: from ruffy.mtv.corp.google.com (ruffy.mtv.corp.google.com [172.18.110.50]) by wpaz33.hot.corp.google.com with ESMTP id p8K4BbG1006216 for ; Mon, 19 Sep 2011 21:11:38 -0700 Received: by ruffy.mtv.corp.google.com (Postfix, from userid 67641) id A67D02461A0; Mon, 19 Sep 2011 21:11:37 -0700 (PDT) To: gdb-patches@sourceware.org Subject: [RFA, doc RFA] Include wallclock time in "maint time" output. Message-Id: <20110920041137.A67D02461A0@ruffy.mtv.corp.google.com> Date: Tue, 20 Sep 2011 05:32:00 -0000 From: dje@google.com (Doug Evans) X-System-Of-Record: true X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-09/txt/msg00369.txt.bz2 Hi. It is often useful to see the wallclock time of commands. This patch adds wallclock time to the output from "maint time 1". This patch depends on a patch for libiberty, pending approval. http://gcc.gnu.org/ml/gcc-patches/2011-09/msg01118.html I'll revise this as appropriate, but can I get an RFA on the addition of wallclock time to the output? [Other bits of gdb can make use of timeval-utils.h, that's another patch.] 2011-09-19 Doug Evans * 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". Index: utils.c =================================================================== RCS file: /cvs/src/src/gdb/utils.c,v retrieving revision 1.261 diff -u -p -r1.261 utils.c --- utils.c 9 Sep 2011 19:41:14 -0000 1.261 +++ utils.c 20 Sep 2011 03:42:22 -0000 @@ -44,6 +44,7 @@ #endif #include +#include "timeval-utils.h" #include "gdbcmd.h" #include "serial.h" #include "bfd.h" @@ -641,7 +642,8 @@ static int display_space; struct cmd_stats { int msg_type; - long start_time; + struct timeval start_wall_time; + long start_cpu_time; long start_space; }; @@ -673,12 +675,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) @@ -714,7 +722,8 @@ make_command_stats_cleanup (int msg_type #endif new_stat->msg_type = msg_type; - new_stat->start_time = get_run_time (); + gettimeofday (&new_stat->start_wall_time, NULL); + new_stat->start_cpu_time = get_run_time (); return make_cleanup_dtor (report_command_stats, new_stat, xfree); } Index: doc/gdb.texinfo =================================================================== RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v retrieving revision 1.862 diff -u -p -r1.862 gdb.texinfo --- doc/gdb.texinfo 16 Sep 2011 09:07:01 -0000 1.862 +++ doc/gdb.texinfo 20 Sep 2011 04:02:07 -0000 @@ -32240,13 +32240,12 @@ 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. +Note that the cpu time printed is for @value{GDBN} only, it does not include +the execution time of the inferior. This can also be requested by invoking @value{GDBN} with the @option{--statistics} command-line switch (@pxref{Mode Options}).