From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 110463 invoked by alias); 21 Jul 2016 16:17:40 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 110451 invoked by uid 89); 21 Jul 2016 16:17:40 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.2 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=Corp, corp, Active, BTS X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Thu, 21 Jul 2016 16:17:29 +0000 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A7B34C05AA5C; Thu, 21 Jul 2016 16:17:28 +0000 (UTC) Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u6LGHQnK001419; Thu, 21 Jul 2016 12:17:27 -0400 Subject: Re: [PATCH v2 1/1] btrace: Resume recording after disconnect. To: Tim Wiederhake , gdb-patches@sourceware.org References: <1468914307-31108-1-git-send-email-tim.wiederhake@intel.com> <1468914307-31108-2-git-send-email-tim.wiederhake@intel.com> Cc: markus.t.metzger@intel.com From: Pedro Alves Message-ID: Date: Thu, 21 Jul 2016 16:17:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1 MIME-Version: 1.0 In-Reply-To: <1468914307-31108-2-git-send-email-tim.wiederhake@intel.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-SW-Source: 2016-07/txt/msg00263.txt.bz2 Hi Tim, Thanks for the update. On 07/19/2016 08:45 AM, Tim Wiederhake wrote: > diff --git a/gdb/testsuite/gdb.btrace/reconnect.exp b/gdb/testsuite/gdb.btrace/reconnect.exp > new file mode 100644 > index 0000000..266ecb4 > --- /dev/null > +++ b/gdb/testsuite/gdb.btrace/reconnect.exp > @@ -0,0 +1,73 @@ > +# This testcase is part of GDB, the GNU debugger. > +# > +# Copyright 2016 Free Software Foundation, Inc. > +# > +# Contributed by Intel Corp. > +# > +# 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 . > + > +load_lib gdbserver-support.exp > + > +if { [skip_btrace_tests] } { return -1 } > +if { [skip_gdbserver_tests] } { return -1 } > + > +standard_testfile > +if [prepare_for_testing $testfile.exp $testfile $srcfile] { > + return -1 > +} > + > +# Make sure we're disconnected and no recording is active, in case > +# we're testing with an extended-remote board, therefore already > +# connected. > +gdb_test "record stop" ".*" "preparation record stop" > +gdb_test "disconnect" ".*" "preparation disconnect" > + > +# Start fresh gdbserver. > +set gdbserver_reconnect_p 1 > +set res [gdbserver_start "" $binfile] > +set gdbserver_protocol [lindex $res 0] > +set gdbserver_gdbport [lindex $res 1] > +gdb_target_cmd $gdbserver_protocol $gdbserver_gdbport > + > +# Create a record. > +gdb_test_no_output "record btrace" "record btrace enable" "first record btrace" > +gdb_test "stepi 19" "0x.* in .* from target.*" "stepi" > +gdb_test "info record" [multi_line \ > + "Active record target: .*" \ > + "Recorded 19 instructions in .+ functions \\(. gaps\\) for thread 1 \\(Thread .*\\)." > +] "first info record" > + > +# Reconnect. > +gdb_test "disconnect" "Ending remote debugging." "first reconnect" > +gdb_target_cmd $gdbserver_protocol $gdbserver_gdbport > + > +# Test if we can access the recorded data from first connect. > +# Note: BTS loses the first function call entry with its associated > +# instructions for technical reasons. This is why we test for > +# "a number between 10 and 19", so we catch at least the case where > +# there are 0 instructions in the record. > +gdb_test "info record" [multi_line \ > + "Active record target: .*" \ > + "Recorded 1. instructions in .+ functions \\(. gaps\\) for thread 1 \\(Thread .*\\)." > +] "second info record" > + > +# Stop recording. > +gdb_test "record stop" "Process record is stopped and all execution logs are deleted." > + > +# Reconnect. > +gdb_test "disconnect" "Ending remote debugging." "second reconnect" > +gdb_target_cmd $gdbserver_protocol $gdbserver_gdbport > + > +# Test that recording is now off. > +gdb_test "info record" "No record target is currently active." "third info record" > Looks mostly good to me, but I'd like to point out something about test grouping. A better way to group the separate tests of the testcase is not to put explicit "second", "third", etc. in the test messages but to use with_test_prefix. Something like: with_test_prefix "tracing" { // disconnect, reconnect, info record } with_test_prefix "not tracing" { // record stop, disconnect, reconnect, info record } In many cases, this avoids writing an explicit test message even (third argument of gdb_test), and has one other more important advantage -- it makes sure that test messages that are emitted deep within common procedures like gdb_target_cmd (should it fail) end up with a unique prefix as well. Otherwise, LGTM. Markus should have the last word, though. Thanks, Pedro Alves