From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 900 invoked by alias); 7 Aug 2006 17:05:19 -0000 Received: (qmail 890 invoked by uid 22791); 7 Aug 2006 17:05:18 -0000 X-Spam-Check-By: sourceware.org Received: from fra-del-02.spheriq.net (HELO fra-del-02.spheriq.net) (195.46.51.98) by sourceware.org (qpsmtpd/0.31) with ESMTP; Mon, 07 Aug 2006 17:05:10 +0000 Received: from fra-out-01.spheriq.net (fra-out-01.spheriq.net [195.46.51.129]) by fra-del-02.spheriq.net with ESMTP id k77H4xLk002526 for ; Mon, 7 Aug 2006 17:04:59 GMT Received: from fra-cus-01.spheriq.net (fra-cus-01.spheriq.net [195.46.51.37]) by fra-out-01.spheriq.net with ESMTP id k77H4wl1024143 for ; Mon, 7 Aug 2006 17:04:58 GMT Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by fra-cus-01.spheriq.net with ESMTP id k77H4vsN001087 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=OK) for ; Mon, 7 Aug 2006 17:04:57 GMT Received: from zeta.dmz-eu.st.com (ns2.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id AC908DA46 for ; Mon, 7 Aug 2006 17:04:52 +0000 (GMT) Received: from mail1.bri.st.com (mail1.bri.st.com [164.129.8.218]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 77A08476DD for ; Mon, 7 Aug 2006 17:04:52 +0000 (GMT) Received: from [164.129.15.13] (bri1043.bri.st.com [164.129.15.13]) by mail1.bri.st.com (MOS 3.5.8-GR) with ESMTP id CHW69076 (AUTH stubbsa); Mon, 7 Aug 2006 18:04:51 +0100 (BST) Message-ID: <44D772B2.5090301@st.com> Date: Mon, 07 Aug 2006 17:05:00 -0000 From: Andrew STUBBS User-Agent: Thunderbird 1.5.0.5 (Windows/20060719) MIME-Version: 1.0 To: GDB Patches Subject: [PATCH] Command trace testsuite Content-Type: multipart/mixed; boundary="------------080608090504040908080300" X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2006-08/txt/msg00035.txt.bz2 This is a multi-part message in MIME format. --------------080608090504040908080300 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-length: 360 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: --------------080608090504040908080300 Content-Type: text/plain; name="commandtrace-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="commandtrace-test.patch" Content-length: 5510 2006-08-07 Andrew Stubbs 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); } --------------080608090504040908080300--