gdb/testsuite/

* gdb.trace/actions.exp (check_tracepoint): New.
	(top level): Start the tracing and check the actions of
	tracepoints.  Save trace data to tfile format.  Restart GDB
	and read trace file in tfile target.  Check the actions of
	tracepoints again.
	* gdb.trace/while-stepping.exp: Likewise.
This commit is contained in:
Yao Qi 2013-04-10 06:12:01 +00:00
parent f37867715f
commit b7a273f8c6
3 changed files with 139 additions and 0 deletions

View File

@ -1,3 +1,12 @@
2013-04-10 Yao Qi <yao@codesourcery.com>
* gdb.trace/actions.exp (check_tracepoint): New.
(top level): Start the tracing and check the actions of
tracepoints. Save trace data to tfile format. Restart GDB
and read trace file in tfile target. Check the actions of
tracepoints again.
* gdb.trace/while-stepping.exp: Likewise.
2013-04-10 Yao Qi <yao@codesourcery.com>
* gdb.trace/report.exp: Use standard_output_file for saved

View File

@ -235,3 +235,87 @@ gdb_test "info tracepoints" \
\[\t \]+not installed on target." \
"5.10a: verify teval actions set for two tracepoints"
gdb_test "break main"
gdb_run_cmd
gdb_test "" "Breakpoint .*"
if ![gdb_target_supports_trace] {
unsupported "target does not support trace"
return -1
}
gdb_trace_setactions "set actions for first tracepoint" \
"$trcpt1" \
"collect \$regs" "^$" \
"end" ""
# Check the definition of tracepoints. These tracepoints may have
# different number in different runs.
proc check_tracepoint { data_source } {
with_test_prefix "$data_source" {
global gdb_prompt
global srcfile
set tp_on_gdb_c_test 0
set tp_on_gdb_asm_test 0
set tp_on_gdb_recursion_test 0
# Since the three tracepoints may appear in different orders, so
# we can't do 'info tracepoints' to match the output. Instead, we
# show each tracepoint one by one and record the number of each
# tracepoint shown up the output. Check the number finally.
for {set i 1} {$i < 4} {incr i 1} {
set test "info tracepoints $i"
gdb_test_multiple "info tracepoints $i" $test {
-re "\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+\\r\\n\[\t \]+collect \\\$regs\\r\\n\[\t \]+installed on target" {
incr tp_on_gdb_c_test
exp_continue
}
-re "\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+\\r\\n\[\t \]+teval \\\$tsv \\+= 1\\r\\n\[\t \]+installed on target" {
incr tp_on_gdb_asm_test
exp_continue
}
-re "\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+\\r\\n\[\t \]+collect gdb_long_test\\r\\n\[\t \]+installed on target" {
incr tp_on_gdb_recursion_test
exp_continue
}
-re "${gdb_prompt} $" {
}
}
}
if {$tp_on_gdb_c_test == 1} {
pass "tracepoint on gdb_c_test"
} else {
fail "tracepoint on gdb_c_test"
}
if {$tp_on_gdb_asm_test == 1} {
pass "tracepoint on gdb_asm_test"
} else {
fail "tracepoint on gdb_asm_test"
}
if {$tp_on_gdb_recursion_test == 1} {
pass "tracepoint on gdb_recursion_test"
} else {
fail "tracepoint on gdb_recursion_test $tp_on_gdb_recursion_test"
}
}
}
# Start and stop the tracing, so that we can save tracepoints
# definitions to trace file.
gdb_test_no_output "tstart" ""
check_tracepoint "live"
gdb_test_no_output "tstop" ""
set tracefile [standard_output_file ${testfile}]
gdb_test "tsave ${tracefile}.tf" \
"Trace data saved to file '${tracefile}.tf'\.\\r"
# Restart GDB and read the trace data in tfile target.
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_file_cmd $binfile
gdb_test "target tfile ${tracefile}.tf" ".*" \
"change to tfile target"
check_tracepoint "tfile"

View File

@ -99,3 +99,49 @@ gdb_test "info tracepoints" \
.*end.*" \
"5.16: confirm actions, step without collecting anything"
gdb_test "break main"
gdb_run_cmd
gdb_test "" "Breakpoint .*"
if ![gdb_target_supports_trace] {
unsupported "target does not support trace"
return -1
}
gdb_trace_setactions "set stepcount to $stepcount" \
"" \
"while-stepping $stepcount" "" \
"collect \$regs " "^$" \
"collect \$locals " "^$" \
"end" ""
proc check_tracepoint { data_source } {
with_test_prefix "$data_source" {
global srcfile
global stepcount
gdb_test "info tracepoints" \
"Num Type\[ \]+Disp Enb Address\[ \]+What.*
\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+.
\[\t \]+while-stepping $stepcount.*
\[\t \]+collect \\\$regs.*
\[\t \]+collect \\\$locals.*
\[\t \]+end.*"
}
}
gdb_test_no_output "tstart"
check_tracepoint "live"
gdb_test_no_output "tstop"
set tracefile [standard_output_file ${testfile}]
gdb_test "tsave ${tracefile}.tf" \
"Trace data saved to file '${tracefile}.tf'\.\\r" \
"save tfile trace file"
# Restart GDB and read the trace data in tfile target.
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_file_cmd $binfile
gdb_test "target tfile ${tracefile}.tf" ".*" \
"change to tfile target"
check_tracepoint "tfile"