* [PATCH] Command trace testsuite
@ 2006-08-07 17:05 Andrew STUBBS
2006-08-08 17:34 ` Daniel Jacobowitz
0 siblings, 1 reply; 7+ messages in thread
From: Andrew STUBBS @ 2006-08-07 17:05 UTC (permalink / raw)
To: GDB Patches
[-- Attachment #1: Type: text/plain, Size: 360 bytes --]
Hi,
Here is a set of tests for the 'set trace-commands' command that I added
a while back.
I also spotted a small omission in the original patch - it did not
increment the nest depth when calling user-defined commands. I have
included a patch for this issue.
Sorry it has taken a little while to get around to this.
Andrew Stubbs
:ADDPATCH testsuite:
[-- Attachment #2: commandtrace-test.patch --]
[-- Type: text/plain, Size: 5510 bytes --]
2006-08-07 Andrew Stubbs <andrew.stubbs@st.com>
gdb/
* cli/cli-script.c (execute_user_command): Update command_next_depth
on user-command call.
gdb/testsuite
* gdb.base/trace-commands.exp: New file.
Index: src/gdb/testsuite/gdb.base/trace-commands.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ src/gdb/testsuite/gdb.base/trace-commands.exp 2006-08-07 17:52:15.000000000 +0100
@@ -0,0 +1,83 @@
+# Copyright 2006 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 2 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# Test that the source command's verbose mode works, the 'set trace-commands'
+# command works, and that the nest depth is correct in various circumstances.
+
+if $tracelevel then {
+ strace $tracelevel
+}
+
+gdb_exit
+gdb_start
+
+# Create a file to source
+set fd [open "tracecommandsscript" w]
+puts $fd "\
+echo in tracecommandsscript\\n
+define func
+ echo in func \$arg0\\n
+end
+if 1
+ if 2
+ if 3
+ if 4
+ echo deep\\n
+ func 999
+ end
+ end
+ end
+end
+"
+close $fd
+
+# Make sure that the show trace-commands exists and the default is 'off'.
+gdb_test "show trace-commands" "State of GDB CLI command tracing is off\\." \
+ "show trace-commands says off"
+
+# Source the script with verbose mode.
+gdb_test "source -v tracecommandsscript" {source -v tracecommandsscript[\r\n]+\+echo in tracecommandsscript\\n[\r\n]+in tracecommandsscript[\r\n]+\+define func[\r\n]+\+if 1[\r\n]+\+\+if 2[\r\n]+\+\+\+if 3[\r\n]+\+\+\+\+if 4[\r\n]+\+\+\+\+\+echo deep\\n[\r\n]+deep[\r\n]+\+\+\+\+\+func 999[\r\n]+\+\+\+\+\+\+echo in func 999\\n[\r\n]+in func 999} "source -v"
+
+# Turn on command tracing.
+gdb_test "set trace-commands" "" "set trace-commands"
+
+# Make sure show trace-commands now gives 'on'.
+gdb_test "show trace-commands" \
+ {\+show trace-commands[\r\n]+State of GDB CLI command tracing is on\.} \
+ "show trace-commands says on"
+
+# Simple test
+gdb_test "echo hi\\n" {\+echo hi\\n[\r\n]+hi} "simple trace-commands test"
+
+# Nested test
+gdb_test "if 1\nset \$i = 0\nwhile \$i < 5\nfunc \$i\nset \$i += 1\nend\nend" \
+ {if 1[\r\n]+\+if 1[\r\n]+set \$i = 0[\r\n]+while \$i < 5[\r\n]+func \$i[\r\n]+set \$i \+= 1[\r\n]+end[\r\n]+end[\r\n]+ >set \$i = 0[\r\n]+ >while \$i < 5[\r\n]+ >func \$i[\r\n]+ >set \$i \+= 1[\r\n]+ >end[\r\n]+ >end[\r\n]+\+\+set \$i = 0[\r\n]+\+\+while \$i < 5[\r\n]+\+\+\+func \$i[\r\n]+\+\+\+\+echo in func \$i\\n[\r\n]+in func \$i[\r\n]+\+\+\+set \$i \+= 1[\r\n]+\+\+\+func \$i[\r\n]+\+\+\+\+echo in func \$i\\n[\r\n]+in func \$i[\r\n]+\+\+\+set \$i \+= 1[\r\n]+\+\+\+func \$i[\r\n]+\+\+\+\+echo in func \$i\\n[\r\n]+in func \$i[\r\n]+\+\+\+set \$i \+= 1[\r\n]+\+\+\+func \$i[\r\n]+\+\+\+\+echo in func \$i\\n[\r\n]+in func \$i[\r\n]+\+\+\+set \$i \+= 1[\r\n]+\+\+\+func \$i[\r\n]+\+\+\+\+echo in func \$i\\n[\r\n]+in func \$i[\r\n]+\+\+\+set \$i \+= 1} \
+ "nested trace-commands test"
+
+
+# Function with source works
+gdb_test "define topfunc\nsource tracecommandsscript\nend" \
+ {define topfunc[\r\n]+\+define topfunc[\r\n]+Type commands for definition of "topfunc"\.[\r\n]+End with a line saying just "end"\.[\r\n]+source tracecommandsscript[\r\n]+end[\r\n]+>source tracecommandsscript[\r\n]+>end} \
+ ""
+gdb_test "topfunc" \
+ {topfunc[\r\n]+\+topfunc[\r\n]+\+\+source tracecommandsscript[\r\n]+\+\+echo in tracecommandsscript\\n[\r\n]+in tracecommandsscript[\r\n]+\+\+define func[\r\n]+\+\+if 1[\r\n]+\+\+\+if 2[\r\n]+\+\+\+\+if 3[\r\n]+\+\+\+\+\+if 4[\r\n]+\+\+\+\+\+\+echo deep\\n[\r\n]+deep[\r\n]+\+\+\+\+\+\+func 999[\r\n]+\+\+\+\+\+\+\+echo in func 999\\n[\r\n]+in func 999} \
+ "nested trace-commands test with source"
+
+# Test nest depth resets properly on error
+gdb_test "if 1\nif 2\nload\necho should not get here\\n\nend\nend" \
+ {if 1[\r\n]+\+if 1[\r\n]+if 2[\r\n]+load[\r\n]+echo should not get here\\n[\r\n]+end[\r\n]+end[\r\n]+ >if 2[\r\n]+ >load[\r\n]+ >echo should not get here\\n[\r\n]+ >end[\r\n]+ >end[\r\n]+\+\+if 2[\r\n]+\+\+\+load[\r\n]+No executable file specified\.[\r\n]+Use the "file" or "exec-file" command\.} \
+ "depth resets on error part 1"
+gdb_test "echo hi\\n" {\+echo hi\\n[\r\n]+hi} "depth resets on error part 2"
Index: src/gdb/cli/cli-script.c
===================================================================
--- src.orig/gdb/cli/cli-script.c 2006-08-07 16:07:55.000000000 +0100
+++ src/gdb/cli/cli-script.c 2006-08-07 17:10:03.000000000 +0100
@@ -286,6 +286,7 @@ execute_user_command (struct cmd_list_el
not confused with Insight. */
in_user_command = 1;
+ command_nest_depth++;
while (cmdlines)
{
ret = execute_control_command (cmdlines);
@@ -296,6 +297,7 @@ execute_user_command (struct cmd_list_el
}
cmdlines = cmdlines->next;
}
+ command_nest_depth--;
do_cleanups (old_chain);
}
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] Command trace testsuite
2006-08-07 17:05 [PATCH] Command trace testsuite Andrew STUBBS
@ 2006-08-08 17:34 ` Daniel Jacobowitz
2006-08-10 16:16 ` Andrew STUBBS
0 siblings, 1 reply; 7+ messages in thread
From: Daniel Jacobowitz @ 2006-08-08 17:34 UTC (permalink / raw)
To: Andrew STUBBS; +Cc: GDB Patches
On Mon, Aug 07, 2006 at 06:04:50PM +0100, Andrew STUBBS wrote:
> Here is a set of tests for the 'set trace-commands' command that I added
> a while back.
Thanks!
> +# Source the script with verbose mode.
> +gdb_test "source -v tracecommandsscript" {source -v tracecommandsscript[\r\n]+\+echo in tracecommandsscript\\n[\r\n]+in tracecommandsscript[\r\n]+\+define func[\r\n]+\+if 1[\r\n]+\+\+if 2[\r\n]+\+\+\+if 3[\r\n]+\+\+\+\+if 4[\r\n]+\+\+\+\+\+echo deep\\n[\r\n]+deep[\r\n]+\+\+\+\+\+func 999[\r\n]+\+\+\+\+\+\+echo in func 999\\n[\r\n]+in func 999} "source -v"
For this sort of test, there's gdb_expect_list. The nice thing about
that is that it will tell you where there's a problem on errors (and
not generate thousand-character lines). Could you give that a try?
--
Daniel Jacobowitz
CodeSourcery
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] Command trace testsuite
2006-08-08 17:34 ` Daniel Jacobowitz
@ 2006-08-10 16:16 ` Andrew STUBBS
2006-08-10 17:12 ` Daniel Jacobowitz
0 siblings, 1 reply; 7+ messages in thread
From: Andrew STUBBS @ 2006-08-10 16:16 UTC (permalink / raw)
To: GDB Patches
[-- Attachment #1: Type: text/plain, Size: 300 bytes --]
Daniel Jacobowitz wrote:
> For this sort of test, there's gdb_expect_list. The nice thing about
> that is that it will tell you where there's a problem on errors (and
> not generate thousand-character lines). Could you give that a try?
Thanks! That's much better.
How about the attached?
Andrew
[-- Attachment #2: commandtrace-test.patch --]
[-- Type: text/plain, Size: 5104 bytes --]
2006-08-10 Andrew Stubbs <andrew.stubbs@st.com>
gdb/
* cli/cli-script.c (execute_user_command): Update command_next_depth
on user-command call.
gdb/testsuite
* gdb.base/trace-commands.exp: New file.
Index: src/gdb/testsuite/gdb.base/trace-commands.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ src/gdb/testsuite/gdb.base/trace-commands.exp 2006-08-10 16:15:29.000000000 +0100
@@ -0,0 +1,129 @@
+# Copyright 2006 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 2 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# Test that the source command's verbose mode works, the 'set trace-commands'
+# command works, and that the nest depth is correct in various circumstances.
+
+if $tracelevel then {
+ strace $tracelevel
+}
+
+gdb_exit
+gdb_start
+
+# Create a file to source
+set fd [open "tracecommandsscript" w]
+puts $fd "\
+echo in tracecommandsscript\\n
+define func
+ echo in func \$arg0\\n
+end
+if 1
+ if 2
+ if 3
+ if 4
+ echo deep\\n
+ func 999
+ end
+ end
+ end
+end
+"
+close $fd
+
+# Make sure that the show trace-commands exists and the default is 'off'.
+gdb_test "show trace-commands" "State of GDB CLI command tracing is off\\." \
+ "show trace-commands says off"
+
+# Source the script with verbose mode.
+send_gdb "source -v tracecommandsscript\n"
+gdb_expect_list "source -v" ".*$gdb_prompt $" {
+ {[\r\n]\+echo in tracecommandsscript\\n}
+ {[\r\n]\+define func}
+ {[\r\n]\+if 1}
+ {[\r\n]\+\+if 2}
+ {[\r\n]\+\+\+if 3}
+ {[\r\n]\+\+\+\+if 4}
+ {[\r\n]\+\+\+\+\+echo deep\\n}
+ {[\r\n]\+\+\+\+\+func 999}
+ {[\r\n]\+\+\+\+\+\+echo in func 999\\n}
+}
+
+# Turn on command tracing.
+gdb_test "set trace-commands" "" "set trace-commands"
+
+# Make sure show trace-commands now gives 'on'.
+gdb_test "show trace-commands" \
+ {\+show trace-commands[\r\n]+State of GDB CLI command tracing is on\.} \
+ "show trace-commands says on"
+
+# Simple test
+gdb_test "echo hi\\n" {\+echo hi\\n[\r\n]+hi} "simple trace-commands test"
+
+# Nested test
+send_gdb "if 1\nset \$i = 0\nwhile \$i < 5\nfunc \$i\nset \$i += 1\nend\nend\n"
+gdb_expect_list "nested trace-commands test" ".*$gdb_prompt $" {
+ {[\r\n]\+if 1}
+ {[\r\n]\+\+set \$i = 0}
+ {[\r\n]\+\+while \$i < 5}
+ {[\r\n]\+\+\+func \$i}
+ {[\r\n]\+\+\+\+echo in func \$i\\n}
+ {[\r\n]\+\+\+set \$i \+= 1}
+ {[\r\n]\+\+\+func \$i}
+ {[\r\n]\+\+\+\+echo in func \$i\\n}
+ {[\r\n]\+\+\+set \$i \+= 1}
+ {[\r\n]\+\+\+func \$i}
+ {[\r\n]\+\+\+\+echo in func \$i\\n}
+ {[\r\n]\+\+\+set \$i \+= 1}
+ {[\r\n]\+\+\+func \$i}
+ {[\r\n]\+\+\+\+echo in func \$i\\n}
+ {[\r\n]\+\+\+set \$i \+= 1}
+ {[\r\n]\+\+\+func \$i}
+ {[\r\n]\+\+\+\+echo in func \$i\\n}
+ {[\r\n]\+\+\+set \$i \+= 1}
+}
+
+# Function with source works
+send_gdb "define topfunc\nsource tracecommandsscript\nend\n"
+gdb_expect_list "define user command" ".*$gdb_prompt $" {
+ {[\r\n]\+define topfunc}
+}
+send_gdb "topfunc\n"
+gdb_expect_list "nested trace-commands test with source" ".*$gdb_prompt $" {
+ {[\r\n]\+topfunc}
+ {[\r\n]\+\+source tracecommandsscript}
+ {[\r\n]\+\+echo in tracecommandsscript\\n}
+ {[\r\n]\+\+define func}
+ {[\r\n]\+\+if 1}
+ {[\r\n]\+\+\+if 2}
+ {[\r\n]\+\+\+\+if 3}
+ {[\r\n]\+\+\+\+\+if 4}
+ {[\r\n]\+\+\+\+\+\+echo deep\\n}
+ {[\r\n]\+\+\+\+\+\+func 999}
+ {[\r\n]\+\+\+\+\+\+\+echo in func 999\\n}
+}
+
+# Test nest depth resets properly on error
+send_gdb "if 1\nif 2\nload\necho should not get here\\n\nend\nend\n"
+gdb_expect_list "depth resets on error part 1" ".*$gdb_prompt $" {
+ {[\r\n]\+if 1}
+ {[\r\n]\+\+if 2}
+ {[\r\n]\+\+\+load}
+ {[\r\n]No executable file specified\.}
+ {[\r\n]Use the "file" or "exec-file" command\.}
+}
+gdb_test "echo hi\\n" {[\r\n]\+echo hi\\n[\r\n]+hi} \
+ "depth resets on error part 2"
Index: src/gdb/cli/cli-script.c
===================================================================
--- src.orig/gdb/cli/cli-script.c 2006-08-07 16:07:55.000000000 +0100
+++ src/gdb/cli/cli-script.c 2006-08-07 17:10:03.000000000 +0100
@@ -286,6 +286,7 @@ execute_user_command (struct cmd_list_el
not confused with Insight. */
in_user_command = 1;
+ command_nest_depth++;
while (cmdlines)
{
ret = execute_control_command (cmdlines);
@@ -296,6 +297,7 @@ execute_user_command (struct cmd_list_el
}
cmdlines = cmdlines->next;
}
+ command_nest_depth--;
do_cleanups (old_chain);
}
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] Command trace testsuite
2006-08-10 16:16 ` Andrew STUBBS
@ 2006-08-10 17:12 ` Daniel Jacobowitz
2006-08-10 19:13 ` Andrew STUBBS
0 siblings, 1 reply; 7+ messages in thread
From: Daniel Jacobowitz @ 2006-08-10 17:12 UTC (permalink / raw)
To: Andrew STUBBS; +Cc: GDB Patches
On Thu, Aug 10, 2006 at 04:20:55PM +0100, Andrew STUBBS wrote:
> 2006-08-10 Andrew Stubbs <andrew.stubbs@st.com>
>
> gdb/
> * cli/cli-script.c (execute_user_command): Update command_next_depth
> on user-command call.
>
> gdb/testsuite
> * gdb.base/trace-commands.exp: New file.
OK, and thanks.
--
Daniel Jacobowitz
CodeSourcery
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Command trace testsuite
2006-08-10 17:12 ` Daniel Jacobowitz
@ 2006-08-10 19:13 ` Andrew STUBBS
2006-08-10 20:30 ` Eli Zaretskii
0 siblings, 1 reply; 7+ messages in thread
From: Andrew STUBBS @ 2006-08-10 19:13 UTC (permalink / raw)
To: GDB Patches
[-- Attachment #1: Type: text/plain, Size: 114 bytes --]
Daniel Jacobowitz wrote:
> OK, and thanks.
Thanks, committed.
How about the attached for the NEWS file?
Andrew
[-- Attachment #2: commandtrace-news.patch --]
[-- Type: text/plain, Size: 772 bytes --]
2006-08-10 Andrew Stubbs <andrew.stubbs@st.com>
* NEWS: Add 'set trace-commands' command.
Index: src/gdb/NEWS
===================================================================
--- src.orig/gdb/NEWS 2006-08-10 16:32:13.000000000 +0100
+++ src/gdb/NEWS 2006-08-10 17:13:55.000000000 +0100
@@ -21,6 +21,12 @@ show substitute-path
for instance when the sources were moved to a different location
between compilation and debugging.
+set trace-commands
+show trace-commands
+ Print each CLI command as it is executed. Each command is prefixed with
+ a number of `+' symbols representing the nest depth.
+ The source command now has a `-v' option to enable the same feature.
+
* REMOVED features
The ARM Demon monitor support (RDP protocol, "target rdp").
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Command trace testsuite
2006-08-10 19:13 ` Andrew STUBBS
@ 2006-08-10 20:30 ` Eli Zaretskii
2006-08-14 7:32 ` Andrew STUBBS
0 siblings, 1 reply; 7+ messages in thread
From: Eli Zaretskii @ 2006-08-10 20:30 UTC (permalink / raw)
To: Andrew STUBBS; +Cc: gdb-patches
> Date: Thu, 10 Aug 2006 17:16:36 +0100
> From: Andrew STUBBS <andrew.stubbs@st.com>
>
> How about the attached for the NEWS file?
Okay, but...
> + Print each CLI command as it is executed. Each command is prefixed with
> + a number of `+' symbols representing the nest depth.
^^^^
I think ``nesting'' is better here.
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] Command trace testsuite
2006-08-10 20:30 ` Eli Zaretskii
@ 2006-08-14 7:32 ` Andrew STUBBS
0 siblings, 0 replies; 7+ messages in thread
From: Andrew STUBBS @ 2006-08-14 7:32 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 117 bytes --]
Eli Zaretskii wrote:
> Okay, but...
> I think ``nesting'' is better here.
Thanks, I committed the attached.
Andrew
[-- Attachment #2: commandtrace-news.patch --]
[-- Type: text/plain, Size: 775 bytes --]
2006-08-11 Andrew Stubbs <andrew.stubbs@st.com>
* NEWS: Add 'set trace-commands' command.
Index: src/gdb/NEWS
===================================================================
--- src.orig/gdb/NEWS 2006-08-11 13:40:19.000000000 +0100
+++ src/gdb/NEWS 2006-08-11 13:42:30.000000000 +0100
@@ -21,6 +21,12 @@ show substitute-path
for instance when the sources were moved to a different location
between compilation and debugging.
+set trace-commands
+show trace-commands
+ Print each CLI command as it is executed. Each command is prefixed with
+ a number of `+' symbols representing the nesting depth.
+ The source command now has a `-v' option to enable the same feature.
+
* REMOVED features
The ARM Demon monitor support (RDP protocol, "target rdp").
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2006-08-11 13:07 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-08-07 17:05 [PATCH] Command trace testsuite Andrew STUBBS
2006-08-08 17:34 ` Daniel Jacobowitz
2006-08-10 16:16 ` Andrew STUBBS
2006-08-10 17:12 ` Daniel Jacobowitz
2006-08-10 19:13 ` Andrew STUBBS
2006-08-10 20:30 ` Eli Zaretskii
2006-08-14 7:32 ` Andrew STUBBS
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox