Browse Source
Yao Qi <yao@codesourcery.com> * tracepoint.c (start_tracing): Clear `inserted' flag. 2011-12-10 Yao Qi <yao@codesourcery.com> * gdb.trace/status-stop.exp: New. * gdb.trace/status-stop.c: New.gdb_7_4-branch
5 changed files with 186 additions and 0 deletions
@ -0,0 +1,48 @@ |
|||
/* This testcase is part of GDB, the GNU debugger.
|
|||
|
|||
Copyright 2011 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 <http://www.gnu.org/licenses/>. */
|
|||
|
|||
static void |
|||
func1 (void) |
|||
{} |
|||
|
|||
int buf[1024]; |
|||
|
|||
static void |
|||
func2 (void) |
|||
{} |
|||
|
|||
static void |
|||
end (void) |
|||
{} |
|||
|
|||
int |
|||
main (void) |
|||
{ |
|||
int i; |
|||
|
|||
func1 (); |
|||
|
|||
/* We call func2 as many times as possible to make sure that trace is
|
|||
stopped due to trace buffer is full. */ |
|||
for (i = 0; i < 10000; i++) |
|||
{ |
|||
func2 (); |
|||
} |
|||
|
|||
end (); |
|||
return 0; |
|||
} |
|||
@ -0,0 +1,124 @@ |
|||
# Copyright 2011 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 <http://www.gnu.org/licenses/>. |
|||
|
|||
load_lib "trace-support.exp"; |
|||
|
|||
set testfile "status-stop" |
|||
set executable $testfile |
|||
set srcfile ${testfile}.c |
|||
set binfile $objdir/$subdir/$testfile |
|||
set expfile $testfile.exp |
|||
|
|||
|
|||
if [prepare_for_testing $expfile $executable $srcfile \ |
|||
{debug nowarnings}] { |
|||
untested "failed to prepare for trace tests" |
|||
return -1 |
|||
} |
|||
|
|||
# Verify that the sequence of commands "tstart tstop tstart" works well. |
|||
|
|||
proc test_tstart_tstop_tstart { } { |
|||
global executable |
|||
global pf_prefix |
|||
global hex |
|||
|
|||
set old_pf_prefix $pf_prefix |
|||
set pf_prefix "$pf_prefix tstart_tstop_tstart:" |
|||
|
|||
# Start with a fresh gdb. |
|||
clean_restart ${executable} |
|||
if ![runto_main] { |
|||
fail "Can't run to main" |
|||
set pf_prefix $old_pf_prefix |
|||
return -1 |
|||
} |
|||
|
|||
gdb_test "trace func1" "Tracepoint \[0-9\] at $hex: file.*" |
|||
gdb_test_no_output "tstart" |
|||
|
|||
gdb_test "break end" "Breakpoint \[0-9\] at $hex: file.*" |
|||
gdb_test "continue" "Continuing\\.\[ \r\n\]+Breakpoint.*" "continue to end" |
|||
|
|||
gdb_test_no_output "tstop" |
|||
|
|||
gdb_test_no_output "tstart" |
|||
|
|||
set pf_prefix $old_pf_prefix |
|||
} |
|||
|
|||
# Verify the sequence of commands "tstart tstart" works well. |
|||
|
|||
proc test_tstart_tstart { } { |
|||
global executable |
|||
global pf_prefix |
|||
global hex |
|||
|
|||
set old_pf_prefix $pf_prefix |
|||
set pf_prefix "$pf_prefix tstart_tstart:" |
|||
|
|||
# Start with a fresh gdb. |
|||
clean_restart ${executable} |
|||
if ![runto_main] { |
|||
fail "Can't run to main" |
|||
set pf_prefix $old_pf_prefix |
|||
return -1 |
|||
} |
|||
|
|||
gdb_test "trace func1" "Tracepoint \[0-9\] at $hex: file.*" |
|||
gdb_test_no_output "tstart" |
|||
|
|||
gdb_test "tstart" "" "tstart again" "A trace is running already. Start a new run\\? \\(y or n\\) " "y" |
|||
|
|||
set pf_prefix $old_pf_prefix |
|||
} |
|||
|
|||
# Verify that trace stops clearly when trace buffer is full. |
|||
|
|||
proc test_buffer_full_tstart { } { |
|||
global executable |
|||
global pf_prefix |
|||
global hex |
|||
|
|||
set old_pf_prefix $pf_prefix |
|||
set pf_prefix "$pf_prefix buffer_full_tstart:" |
|||
|
|||
# Start with a fresh gdb. |
|||
clean_restart ${executable} |
|||
if ![runto_main] { |
|||
fail "Can't run to main" |
|||
set pf_prefix $old_pf_prefix |
|||
return -1 |
|||
} |
|||
|
|||
gdb_test "trace func2" "Tracepoint \[0-9\] at $hex: file.*" |
|||
gdb_trace_setactions "collect buf: define actions" \ |
|||
"" \ |
|||
"collect buf" "^$" |
|||
|
|||
gdb_test_no_output "tstart" |
|||
gdb_test "break end" "Breakpoint \[0-9\] at $hex: file.*" |
|||
gdb_test "continue" "Continuing\\.\[ \r\n\]+Breakpoint.*" "continue to end" |
|||
|
|||
gdb_test "tstatus" ".*buffer was full.*" |
|||
gdb_test_no_output "tstart" |
|||
|
|||
set old_pf_prefix $pf_prefix |
|||
} |
|||
|
|||
test_tstart_tstop_tstart |
|||
|
|||
test_tstart_tstart |
|||
|
|||
test_buffer_full_tstart |
|||
Loading…
Reference in new issue