This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] gdb_unload - account for another termination message


On Tuesday 15 March 2011 10:56:31, Phil Muldoon wrote:
> 
> While working on another bug I attempted to use gdb_unload in the
> testsuite.  I noticed that it did not account for a termination
> message. (This was the one message I was getting).  This would lead to a
> timeout and failure.   Is it ok to just add another -re test in the
> original test here?

The current code reads:

proc gdb_unload {} {
    global verbose
    global GDB
    global gdb_prompt
    send_gdb "file\n"
    gdb_expect 60 {
	-re "No executable file now\[^\r\n\]*\[\r\n\]" { exp_continue }
	-re "No symbol file now\[^\r\n\]*\[\r\n\]" { exp_continue }
	-re "A program is being debugged already..*Kill it.*y or n. $"\
	    { send_gdb "y\n"
		verbose "\t\tKilling previous program being debugged"
	    exp_continue
	}

I don't think the "Kill it" message can ever appear in response
to a "file" command.  This may be old behavior.  I'd rather we
replace this part with current reality.

> diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
> index 1b601af..6cc8410 100644
> --- a/gdb/testsuite/lib/gdb.exp
> +++ b/gdb/testsuite/lib/gdb.exp
> @@ -142,6 +142,11 @@ proc gdb_unload {} {
>  		verbose "\t\tKilling previous program being debugged"
>  	    exp_continue
>  	}
> +	-re "A program is being debugged already..*Are you sure.*y or n. $"\
> +	    { send_gdb "y\n"
> +		verbose "\t\tKilling previous program being debugged"

The full message I see is:

(top-gdb) file gdb
A program is being debugged already.
Are you sure you want to change the file? (y or n) 

So please adjust the regex to catch the whole frase,
not just the "Are you sure" part, which could paper
over other questions.  Also, "Killing previous program..." isn't
what answering 'y' does.


> +	    exp_continue
> +	}
>  	-re "Discard symbol table from .*y or n.*$" {
>  	    send_gdb "y\n"
>  	    exp_continue
> 

-- 
Pedro Alves


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]