# 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" "" ""