From mboxrd@z Thu Jan 1 00:00:00 1970 From: Fernando Nasser To: Eli Zaretskii Cc: Andrew Cagney , Michael Snyder , Daniel Jacobowitz , gdb-patches@sourceware.cygnus.com Subject: Re: [RFA] Testsuite addition for x86 linux GDB and SIGALRM fix Date: Thu, 26 Jul 2001 08:48:00 -0000 Message-id: <3B603B33.B9B33633@redhat.com> References: X-SW-Source: 2001-07/msg00652.html Eli Zaretskii wrote: > > On Thu, 26 Jul 2001, Fernando Nasser wrote: > > > > o step executes instructions until you > > > leave the current line > > > (be it enter a function or reach a new > > > line) > > > > > > > 'step' should never leave you in the same line from where you've issued > > it. That is counter intuitive, even if you had a stop-finish in the > > middle. > > Agreed. > > > "finish" is a source level command and source level commands should not > > leave you in the middle of source lines. > > I'm not sure I understand what you mean here (or that you mean what I > understand ;-). We could have a source line like this: > > int i = (foo (), bar ()); > > or even like this: > > int i = foo (); bar (); > > Where would you suggest that "finish" leaves you in these cases, and what > does ``in the middle of source lines'' mean in these cases? Also, do you > think these two cases are fundamentally different from "foo (bar ());", > and if so, how are they different? > All are the same. "step" gets into foo(), a "finish" finishes foo(), but then there is bar() so you stop there next. Another "finish" and you will stop on the line that follows the above lines. Note that a "finishi" command would leave you at the return point at some PC in the middle of the above source lines. > > When the user issues a "step" on 'foo (bar ())' source line, he/she may > > want to enter either bar() or foo(). We cannot know that, so we must > > stop at each one and he/she can go to the next by issuing "finish", > > i.e., "finish _this_ subroutine". > > Now I'm confused: this seems to suggest that the first "step" gets her > inside bar(), and if she then types "finish", she will be after the call > to bar(), but before the call to foo() (that's how I interpret ``finish > _this_ subroutine''). But that is in the middle of a source line, which > seems to contradict your previous requirement. > No, that would be a "finishi" (assemble level debugging). For the "finish (source level debugging) see above. Regards, Fernando -- Fernando Nasser Red Hat Canada Ltd. E-Mail: fnasser@redhat.com 2323 Yonge Street, Suite #300 Toronto, Ontario M4P 2C9