Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: Gary Benson <gbenson@redhat.com>,
	Ruslan Kabatsayev <b7.10110111@gmail.com>
Cc: psmith@gnu.org, gdb@sourceware.org
Subject: Re: gdb -batch always exits with status 0
Date: Fri, 17 Aug 2018 18:30:00 -0000	[thread overview]
Message-ID: <3408f7e7-91c9-1230-dbf1-51a3bdd0c6f6@redhat.com> (raw)
In-Reply-To: <20180817160325.GA12274@blade.nx>

On 08/17/2018 05:03 PM, Gary Benson wrote:
> Ruslan Kabatsayev wrote:
>> On Fri, 17 Aug 2018 at 18:23, Gary Benson <gbenson@redhat.com> wrote:
>>>
>>> It would be the least impactful way, sure, but my point is that
>>> GDB doesn't operate in an intuitive way, and my view is that
>>> whatever is intuitive should be the default.  Having to request it
>>> with a special flag makes GDB harder for new users.
>>
>> Not sure about intuitiveness of early exit, but we have an example
>> of the converse: bash (and other shells). Namely, by default it
>> executes all the commands, exits with the exit status of the last
>> command executed. But you can `set -e`, and then first failing
>> command will stop processing. But then, there do exist means to
>> suppress failure (e.g. `badCommand && true`), which GDB doesn't seem
>> to have.
> 
> Shells are the only example I could think of.  And I wonder what
> proportion of shell scripts start with 'set -e' :)  Having to add
> that is the kind of thing I mean about making things harder for
> new users.

To me, it feels like you're not discussing the real issue.

GDB _does_ stop processing scripts on first error.

 $ cat file1 
 fail1
 fail2
 fail3
 $ cat file2 
 fail4
 fail5
 fail6
 $ gdb -q -x file1 -x file2
 file1:1: Error in sourced command file:
 Undefined command: "fail1".  Try "help".
 file2:1: Error in sourced command file:
 Undefined command: "fail4".  Try "help".                                                                                                                                    
 (gdb)   

Note, fail2, fail3, fail5 and fail6 were not run.

What GDB does not do is consider an error from inside a script
sourced from the shell command line as reason to fail out.  So for
example above, I think Gary is arguing that GDB should have behaved
like this:

 $ gdb -q -x file1 -x file2
 file1:1: Error in sourced command file:
 Undefined command: "fail1".  Try "help".
 (gdb)   

I.e., "file2" was not sourced.

In this aspect, "-ex" behaves exactly like "-x" -- you can think
of -ex as gdb internally pasting the -ex command in a script
and then sourcing it with -x.

Thanks,
Pedro Alves


  reply	other threads:[~2018-08-17 18:30 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-05 14:47 Gary Benson
2018-07-05 14:55 ` Ruslan Kabatsayev
2018-07-05 15:23 ` Paul Smith
2018-08-17 11:03   ` Gary Benson
2018-08-17 11:25     ` Ruslan Kabatsayev
2018-08-17 13:24     ` Paul Smith
2018-08-17 15:23       ` Gary Benson
2018-08-17 15:44         ` Ruslan Kabatsayev
2018-08-17 16:03           ` Gary Benson
2018-08-17 18:30             ` Pedro Alves [this message]
2018-08-22  9:07               ` Gary Benson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3408f7e7-91c9-1230-dbf1-51a3bdd0c6f6@redhat.com \
    --to=palves@redhat.com \
    --cc=b7.10110111@gmail.com \
    --cc=gbenson@redhat.com \
    --cc=gdb@sourceware.org \
    --cc=psmith@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox