From: Michael Snyder <msnyder@vmware.com>
To: Hui Zhu <teawater@gmail.com>
Cc: Eli Zaretskii <eliz@gnu.org>,
"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: Re: [RFA/RFC] Add dump and load command to process record and replay
Date: Fri, 07 Aug 2009 03:34:00 -0000 [thread overview]
Message-ID: <4A7B9F49.9030202@vmware.com> (raw)
In-Reply-To: <daef60380908062026p64092c92i1556ee1302ee452c@mail.gmail.com>
I think it's too easy to get the debugger into an internally
inconsistent state. If you don't know *exactly* what you are
doing, this is too likely to go wrong.
Sometimes we have to choose between flexibility and letting
the user shoot himself in the foot.
Hui Zhu wrote:
> About it, I think keep the old one can make the function more
> flexible. I try it sometime. It can make two or more gdb_record files
> to one file.
>
> What about add a warning to there? When the record list is not empty,
> output a warning.
>
> Thanks,
> Hui
>
> On Fri, Aug 7, 2009 at 11:04, Michael Snyder<msnyder@vmware.com> wrote:
>> Hui Zhu wrote:
>>
>>> +/* Load the execution log from a file. */
>>> +
>>> +static void
>>> +cmd_record_load (char *args, int from_tty)
>>> +{
>>> + int recfd;
>>> + uint32_t magic;
>>> + struct cleanup *old_cleanups;
>>> + struct cleanup *old_cleanups2;
>>> + struct record_entry *rec;
>>> + int insn_number = 0;
>>> +
>>> + if (current_target.to_stratum != record_stratum)
>>> + {
>>> + cmd_record_start (NULL, from_tty);
>>> + printf_unfiltered (_("Auto start process record.\n"));
>>> + }
>>> +
>>> + if (!args || (args && !*args))
>>> + error (_("Argument for filename required.\n"));
>>> +
>>> + /* Open the load file. */
>>> + recfd = open (args, O_RDONLY | O_BINARY);
>>> + if (recfd < 0)
>>> + error (_("Failed to open '%s' for loading execution records: %s"),
>>> + args, strerror (errno));
>>> + old_cleanups = make_cleanup (cmd_record_fd_cleanups, &recfd);
>>> +
>>> + /* Check the magic code. */
>>> + record_read_dump (args, recfd, &magic, 4);
>>> + if (magic != RECORD_FILE_MAGIC)
>>> + error (_("'%s' is not a valid dump of execution records."), args);
>>> +
>>> + /* Load the entries in recfd to the record_arch_list_head and
>>> + record_arch_list_tail. */
>>> + record_arch_list_head = NULL;
>>> + record_arch_list_tail = NULL;
>> Hi Hui,
>>
>> It seems to me that you didn't discard the old recording entries
>> before loading the new ones -- you just added the new ones into
>> the existing list.
>>
>> I don't think that is safe. We can't be sure that there is
>> any relationship between any existing recording entries and
>> the new entries from the file. We certainly can't assume
>> that they are consecutive.
>>
>> I think you have to completely clear the record log at this point,
>> before you begin reading new entries from the dump file.
>>
>> What I would suggest is that we add these lines to
>> record_list_release -- and then we can just call that here.
>>
>> @@ -159,6 +159,11 @@ record_list_release (struct record_entry
>>
>> if (rec != &record_first)
>> xfree (rec);
>> +
>> + record_list = &record_first;
>> + record_arch_list_tail = NULL;
>> + record_arch_list_tail = NULL;
>> + record_insn_num = 0;
>> }
>>
>>
>>
next prev parent reply other threads:[~2009-08-07 3:29 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-01 7:31 Hui Zhu
2009-08-01 9:57 ` Eli Zaretskii
2009-08-01 19:20 ` Michael Snyder
2009-08-02 3:18 ` Michael Snyder
2009-08-02 5:58 ` Hui Zhu
2009-08-03 4:12 ` Hui Zhu
2009-08-03 18:29 ` Eli Zaretskii
2009-08-04 1:58 ` Hui Zhu
2009-08-04 2:07 ` Hui Zhu
2009-08-04 18:26 ` Eli Zaretskii
2009-08-04 20:01 ` Michael Snyder
2009-08-05 9:21 ` Hui Zhu
2009-08-05 20:19 ` [RFA/RFC] Add dump and load command to process record (file format etc) Michael Snyder
2009-08-06 2:17 ` Hui Zhu
2009-08-12 14:11 ` Michael Snyder
2009-08-12 15:16 ` Tom Tromey
2009-08-12 22:38 ` Michael Snyder
2009-08-16 0:04 ` Hui Zhu
2009-08-05 21:23 ` [RFA/RFC] Add dump and load command to process record and replay Michael Snyder
2009-08-06 3:14 ` Eli Zaretskii
2009-08-06 14:16 ` Hui Zhu
2009-08-07 3:27 ` Michael Snyder
2009-08-07 3:29 ` Hui Zhu
2009-08-07 3:34 ` Michael Snyder [this message]
2009-08-07 4:06 ` Hui Zhu
2009-08-07 8:41 ` Eli Zaretskii
2009-08-07 9:53 ` Hui Zhu
2009-08-07 12:51 ` Eli Zaretskii
2009-08-07 16:22 ` Hui Zhu
2009-08-07 17:42 ` Michael Snyder
2009-08-08 13:28 ` Hui Zhu
2009-08-10 3:09 ` Michael Snyder
2009-08-22 17:39 ` Hui Zhu
2009-08-23 1:14 ` Hui Zhu
2009-08-23 23:43 ` Michael Snyder
2009-08-24 8:20 ` Hui Zhu
2009-08-24 18:32 ` Michael Snyder
2009-08-25 8:47 ` Hui Zhu
2009-08-26 1:40 ` Michael Snyder
2009-08-26 2:59 ` Michael Snyder
2009-08-29 15:53 ` Hui Zhu
2009-08-29 18:06 ` Eli Zaretskii
2009-08-29 18:28 ` Hui Zhu
2009-08-29 20:26 ` Eli Zaretskii
2009-08-29 20:39 ` Michael Snyder
2009-08-30 3:03 ` Eli Zaretskii
2009-08-30 5:36 ` Hui Zhu
2009-08-30 23:40 ` Eli Zaretskii
2009-08-31 7:10 ` Hui Zhu
2009-09-05 3:30 ` Michael Snyder
2009-09-06 16:29 ` Hui Zhu
2009-08-29 20:05 ` Michael Snyder
2009-08-29 20:33 ` Eli Zaretskii
2009-08-29 21:20 ` Michael Snyder
2022-01-21 6:46 Simon Sobisch via Gdb-patches
2022-01-24 9:26 ` Hui Zhu via Gdb-patches
2022-04-13 12:21 ` Simon Sobisch via Gdb-patches
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=4A7B9F49.9030202@vmware.com \
--to=msnyder@vmware.com \
--cc=eliz@gnu.org \
--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