From: Michael Snyder <msnyder@vmware.com>
To: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>,
Hui Zhu <teawater@gmail.com>
Subject: [RFA] Expand "info record"
Date: Mon, 12 Oct 2009 16:32:00 -0000 [thread overview]
Message-ID: <4AD358E7.50009@vmware.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 289 bytes --]
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
[-- Attachment #2: inforec.txt --]
[-- Type: text/plain, Size: 3615 bytes --]
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);
}
next reply other threads:[~2009-10-12 16:32 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-12 16:32 Michael Snyder [this message]
2009-10-12 17:06 ` Tom Tromey
2009-10-12 17:15 ` Michael Snyder
2009-10-12 18:10 ` Tom Tromey
2009-10-13 11:20 ` Pedro Alves
2009-10-13 6:03 ` Hui Zhu
2009-10-13 17:21 ` Michael Snyder
2009-10-13 18:01 ` Michael Snyder
2009-10-20 19:50 ` Michael Snyder
2009-10-20 20:54 ` Pedro Alves
2009-10-20 22:31 ` Michael Snyder
2009-10-21 0:22 ` Pedro Alves
2009-10-21 1:38 ` Michael Snyder
2009-10-21 3:09 ` Hui Zhu
2009-10-21 15:24 ` Michael Snyder
2009-10-22 2:30 ` Hui Zhu
2009-10-21 10:54 ` Pedro Alves
2009-10-21 15:23 ` Michael Snyder
2009-10-22 13:08 ` Pedro Alves
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4AD358E7.50009@vmware.com \
--to=msnyder@vmware.com \
--cc=gdb-patches@sourceware.org \
--cc=teawater@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox