This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Multi-exec patches (Was: [rfc] Infrastructure to disable breakpoints during inferior startup)
>>>>> "Tom" == Tom Tromey <tromey@redhat.com> writes:
Tom> I still haven't actually tried it, but I hope to do so soon.
I tried it a little.
I can't remember ... should this all work ok on x86 Linux? I thought
yes, hence this report, but if not, feel free to just let me know and
ignore all this.
Most of what I've written here seems familiar. I assume I read it all
in earlier notes of yours :-)
The first thing I noticed is that the new features are off by default.
I had to:
set schedule-multiple on
set detach-on-fork off
to get it to work. Having it disabled by default is ok as long as it is
a "technology preview", but if we think it is very solid then I think we
should enable it by default.
Having to set 2 options is obscure. I suppose I didn't really need to
set both, except my first attempt was to run "make", which tripped over
the vfork problem.
I put a gcc I built into my $PATH. Then I did:
$ cd gdbserver
$ ../gdb make
Then I tried various things.
"run clean" worked ok! That was cool!
Then I exited gdb and restarted it and tried a plain "run". This gave
me:
(gdb) set schedule-multiple on
(gdb) set detach-on-fork off
(gdb) run
Starting program: /usr/bin/make
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
[New process 3931]
process 3931 is executing new program: /bin/true
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
Program exited normally.
... which is a little odd, since no build was done.
And, what's with process 3931 executing /bin/true?
Am I not debugging the 'make' process?
A minor nit: I think "is executing a new program" would read better.
Then I did "run clean":
(gdb) run clean
Starting program: /bin/true clean
(no debugging symbols found)
(no debugging symbols found)
gcc -c -Wall -g3 -I. -I../../../archer/gdb/gdbserver -I../../../archer/gdb/gdbserver/../common -I../../../archer/gdb/gdbserver/../regformats -I../../../archer/gdb/gdbserver/../../include ../../../archer/gdb/gdbserver/regcache.c
Here, for some reason, the compile started. And, gdb forgot that I was
looking at "make" and ran /bin/true.
At this point, gdb hangs and cannot be interrupted. I kill -9'd it.
If I do the above but remember "file /usr/bin/make", gdb starts make
again ok and the compile starts. But, gdb hangs again as above.
This hang occurs often enough that I couldn't get to other tests, like
trying to set a breakpoint that would only trigger in cc1.
Those "(no debugging symbols found)" messages made me want Doug's patch
more ;)
Note that it is entirely possible that the patch applied strangely and I
introduced some bug that way. Or, maybe there is some other pilot
error.
Tom