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]

Re: [RFA] Expand "info record"


Thanks Michael,

I have 2 questions for this patch:

1.  info rec will not show record_insn_num?

2.  (gdb) info rec
Lowest  recorded instruction number is 0.
Current instruction number is 46.
Highest recorded instruction number is 1016.
Max logged instructions is 200000
Do you think the last line need a dot?

Hui

On Tue, Oct 13, 2009 at 00:27, Michael Snyder <msnyder@vmware.com> wrote:
> Hi Hui,
>
> This patch expands on the output of "info record" so that it looks like
> this:
>
> (gdb) info rec
> Lowest ?recorded instruction number is 0.
> Current instruction number is 46.
> Highest recorded instruction number is 1016.
> Max logged instructions is 200000
>
>
> What do you think?
> Michael
>
>
> 2009-10-12 ?Michael Snyder ?<msnyder@vmware.com>
> ? ? ? ?Elaborate "info record".
> ? ? ? ?* record.c (struct record_end_entry): New field 'insn_num'.
> ? ? ? ?(record_insn_count): New variable.
> ? ? ? ?(record_open): Initialize record_insn_count.
> ? ? ? ?(info_record_command): Display contents of record log as
> ? ? ? ?lowest, current, and highest instruction counts.
> ? ? ? ?(show_record_insn_number): Delete.
> ? ? ? ?(_initialize_record): Remove add_cmd show_record_insn_number.
>
> Index: record.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/record.c,v
> retrieving revision 1.20
> diff -u -p -r1.20 record.c
> --- record.c ? ?27 Sep 2009 02:49:34 -0000 ? ? ?1.20
> +++ record.c ? ?12 Oct 2009 16:25:38 -0000
> @@ -62,6 +62,7 @@ struct record_mem_entry
> ?struct record_end_entry
> ?{
> ? enum target_signal sigval;
> + ?unsigned long long insn_num;
> ?};
>
> ?enum record_type
> @@ -100,6 +101,7 @@ static struct record_entry *record_arch_
> ?static int record_stop_at_limit = 1;
> ?static int record_insn_max_num = DEFAULT_RECORD_INSN_MAX_NUM;
> ?static int record_insn_num = 0;
> +static unsigned long long record_insn_count;
>
> ?/* The target_ops of process record. ?*/
> ?static struct target_ops record_ops;
> @@ -322,6 +324,7 @@ record_arch_list_add_end (void)
> ? rec->next = NULL;
> ? rec->type = record_end;
> ? rec->u.end.sigval = TARGET_SIGNAL_0;
> + ?rec->u.end.insn_num = record_insn_count++;
>
> ? record_arch_list_add (rec);
>
> @@ -552,6 +555,7 @@ record_open (char *name, int from_tty)
>
> ? /* Reset */
> ? record_insn_num = 0;
> + ?record_insn_count = 0;
> ? record_list = &record_first;
> ? record_list->next = NULL;
> ?}
> @@ -1269,16 +1273,6 @@ set_record_insn_max_num (char *args, int
> ? ? }
> ?}
>
> -/* Print the current index into the record log (number of insns recorded
> - ? so far). ?*/
> -
> -static void
> -show_record_insn_number (char *ignore, int from_tty)
> -{
> - ?printf_unfiltered (_("Record instruction number is %d.\n"),
> - ? ? ? ? ? ? ? ? ? ?record_insn_num);
> -}
> -
> ?static struct cmd_list_element *record_cmdlist, *set_record_cmdlist,
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *show_record_cmdlist, *info_record_cmdlist;
>
> @@ -1299,7 +1293,31 @@ show_record_command (char *args, int fro
> ?static void
> ?info_record_command (char *args, int from_tty)
> ?{
> - ?cmd_show_list (info_record_cmdlist, from_tty, "");
> + ?struct record_entry *p;
> +
> + ?/* Find entry for first actual instruction in the log. ?*/
> + ?for (p = record_first.next;
> + ? ? ? (p != NULL) && (p->type != record_end);
> + ? ? ? p = p->next)
> + ? ?;
> +
> + ?/* Display instruction number for first instruction in the log. ?*/
> + ?if (p != NULL && p->type == record_end)
> + ? ?printf_filtered (_("Lowest ?recorded instruction number is %llu.\n"),
> + ? ? ? ? ? ? ? ? ? ?p->u.end.insn_num);
> +
> + ?/* If we are not at the end of the log, display where we are. ?*/
> + ?if (record_list->next != NULL && record_list->type == record_end)
> + ? ?printf_filtered (_("Current instruction number is %llu.\n"),
> + ? ? ? ? ? ? ? ? ? ?record_list->u.end.insn_num);
> +
> + ?/* Display instruction number for last instruction in the log. ?*/
> + ?printf_filtered (_("Highest recorded instruction number is %llu.\n"),
> + ? ? ? ? ? ? ? ? ?record_insn_count ? record_insn_count - 1 : 0);
> +
> + ?/* Display max log size. ?*/
> + ?printf_filtered (_("Max logged instructions is %d\n"),
> + ? ? ? ? ? ? ? ? ?record_insn_max_num);
> ?}
>
> ?void
> @@ -1369,7 +1387,4 @@ Set the maximum number of instructions t
> ?record/replay buffer. ?Zero means unlimited. ?Default is 200000."),
> ? ? ? ? ? ? ? ? ? ? ? ? ? ?set_record_insn_max_num,
> ? ? ? ? ? ? ? ? ? ? ? ? ? ?NULL, &set_record_cmdlist, &show_record_cmdlist);
> - ?add_cmd ("insn-number", class_obscure, show_record_insn_number,
> - ? ? ? ? ?_("Show the current number of instructions in the "
> - ? ? ? ? ? ?"record/replay buffer."), &info_record_cmdlist);
> ?}
>
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]