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:
parent
f37867715f
commit
b7a273f8c6
|
@ -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>
|
2013-04-10 Yao Qi <yao@codesourcery.com>
|
||||||
|
|
||||||
* gdb.trace/report.exp: Use standard_output_file for saved
|
* gdb.trace/report.exp: Use standard_output_file for saved
|
||||||
|
|
|
@ -235,3 +235,87 @@ gdb_test "info tracepoints" \
|
||||||
\[\t \]+not installed on target." \
|
\[\t \]+not installed on target." \
|
||||||
"5.10a: verify teval actions set for two tracepoints"
|
"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"
|
||||||
|
|
|
@ -99,3 +99,49 @@ gdb_test "info tracepoints" \
|
||||||
.*end.*" \
|
.*end.*" \
|
||||||
"5.16: confirm actions, step without collecting anything"
|
"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"
|
||||||
|
|
Loading…
Reference in New Issue