From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19829 invoked by alias); 22 Oct 2009 19:45:27 -0000 Received: (qmail 19815 invoked by uid 22791); 22 Oct 2009 19:45:25 -0000 X-SWARE-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from smtp-outbound-1.vmware.com (HELO smtp-outbound-1.vmware.com) (65.115.85.69) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 22 Oct 2009 19:45:19 +0000 Received: from mailhost2.vmware.com (mailhost2.vmware.com [10.16.67.167]) by smtp-outbound-1.vmware.com (Postfix) with ESMTP id 4A4D213074; Thu, 22 Oct 2009 12:45:18 -0700 (PDT) Received: from [10.20.94.141] (msnyder-server.eng.vmware.com [10.20.94.141]) by mailhost2.vmware.com (Postfix) with ESMTP id 2F8658E8C4; Thu, 22 Oct 2009 12:45:18 -0700 (PDT) Message-ID: <4AE0B4BD.5050408@vmware.com> Date: Thu, 22 Oct 2009 19:45:00 -0000 From: Michael Snyder User-Agent: Thunderbird 1.5.0.12 (X11/20080411) MIME-Version: 1.0 To: Michael Snyder CC: "gdb-patches@sourceware.org" , Hui Zhu Subject: Re: [RFC] testing specifically for process record References: <4ADD0105.6080000@vmware.com> In-Reply-To: <4ADD0105.6080000@vmware.com> Content-Type: multipart/mixed; boundary="------------040104030509070309070002" 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: 2009-10/txt/msg00537.txt.bz2 This is a multi-part message in MIME format. --------------040104030509070309070002 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-length: 829 Michael Snyder wrote: > There are a number of commands specific to process record, > as opposed to reverse debugging, which we don't have tests > for yet. For instance, > > set/show insn-number-max > set/show stop-at-limit > info record > record delete > record stop > > Plus, there is the behavior of the execution log that should > be tested under various combinations of those settings. > > Here is an attempt that I've started on. I'd appreciate any > suggestions, especially with respect to other tests that you > think should be added. The more things we test, the more > corner cases we can find and fix. (there are a couple of > failures already in there due to corner cases and spellings). > > And Hui -- I'd be delighted if you would take over the > ownership of this test! ;-) Updated versions. --------------040104030509070309070002 Content-Type: text/x-csrc; name="precord.c" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="precord.c" Content-length: 894 /* This testcase is part of GDB, the GNU debugger. Copyright 2009 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ main() { unsigned long long foo = 0; do { foo++; } while (foo);/* Loop for a very long time. */ return foo; /* Should be zero. */ } --------------040104030509070309070002 Content-Type: text/plain; name="precord.exp" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="precord.exp" Content-length: 4145 # Copyright 2009 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . */ # This file is part of the GDB testsuite. # Test precord commands. set testfile "precord" set srcfile ${testfile}.c if { [prepare_for_testing $testfile.exp $testfile $srcfile] } { return -1 } # # Test "show record insn-number-max" # gdb_test "show record insn-number-max" \ "Record/replay buffer limit is .*" "Show record insn-number-max" gdb_test "set record insn-number-max 0" \ "" "Set insn-number-max to unlimited" gdb_test "show record insn-number-max" \ "Record/replay buffer limit is unlimited\." \ "Show insn-number-max unlimited" gdb_test "set record insn-number-max 100000" \ "" "Set insn-number-max to 100000" gdb_test "show record insn-number-max" \ "Record/replay buffer limit is 100000\." "Show insn-number-max 100000" # # Test "show record stop-at-limit" # gdb_test "show record stop-at-limit" \ "Whether record/replay stops when record/replay buffer becomes full is.*" \ "Show record stop-at-limit" set main_location [gdb_get_line_number "break in main"] runto main gdb_test "record" "" "Turn on process record" # FIXME: command ought to acknowledge, so we can test if it succeeded. # # Test "Do you want to auto delete previous execution log entries" # gdb_test "continue" "" "Continue until buffer full" \ "Do you want to auto delete .* or n. " \ "n" gdb_test "info record" "Log contains 100000 instructions.*" \ "verify buffer is full" gdb_test "set record insn-number-max 200000" \ "" "increase insn-number-max to 200000" gdb_test "continue" "" "Continue until buffer full again" \ "Do you want to auto delete .* or n. " \ "n" gdb_test "info record" "Log contains 200000 instructions.*" \ "verify buffer full again" gdb_test "set record insn-number-max 100000" \ "" \ "decrease insn-number-max to 100000" gdb_test "set record stop-at-limit off" "" "set stop-at-limit off" gdb_test "info record" "Log contains 100000 instructions.*" \ "info record before stepi" gdb_test "stepi" gdb_test "info record" "Log contains 100000 instructions.*" \ "info record after stepi" gdb_test "set record insn-number-max 200000" \ "" "Increase insn-number-max again" gdb_test "reverse-continue" "No more reverse-execution history.*" \ "reverse-continue to start of log" gdb_test "info record" "Current instruction number is 0\..*" \ "verify back at beginning of log" gdb_test "continue" "No more reverse-execution history.*" \ "continue to end of log" gdb_test "info record" \ "Lowest recorded .*\[\r\n\]+Highest recorded .* 200000\..*" \ "info record at end of log" gdb_test "stepi" "" "stepi past end of log in record mode" gdb_test "info record" \ "Lowest recorded .*\[\r\n\]+Highest recorded .* 200002\..*" \ "info record past end of log" gdb_test "reverse-stepi 50000" "" "Back up 50000 instructions" gdb_test "info record" \ "Current instruction number is 150002\..*" \ "info record in middle of execution log" gdb_test "record delete" "" "record delete test" \ "Delete the log from this point forward .*..y or n. " "yes" gdb_test "info record" \ "Highest recorded .* is 150002.*Log contains 50001 instructions.*" \ "info record after delete" gdb_test "record stop" \ "Process record is stopped and all execution logs are deleted." \ "record stop" gdb_test "info record" \ "target record is not active.*" \ "info record after stop" gdb_test "frame" "" "" --------------040104030509070309070002--