Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 May 1996 00:00:14 +0100
From:      "Gary Palmer" <gpalmer@FreeBSD.ORG>
To:        grog@lemis.de (Greg Lehey)
Cc:        scrappy@ki.net (Marc G. Fournier), hackers@FreeBSD.ORG (FreeBSD Hackers)
Subject:   Re: I HATE OPTIMISING COMPILERS 
Message-ID:  <2951.833410814@palmer.demon.co.uk>
In-Reply-To: Your message of "Wed, 29 May 1996 18:52:09 %2B0200." <199605291652.SAA24396@allegro.lemis.de> 

next in thread | previous in thread | raw e-mail | index | archive | help
Greg Lehey wrote in message ID
<199605291652.SAA24396@allegro.lemis.de>:
> At this point, of course, our mileage varies.  Here, you would get the
> result:

> + (gdb) p pdu->version
> + $3 = -1

Sorry, BZZZZZZZT

The actual program, producing the actual results:

gdb apps/snmpwalk
GDB is free software and you are welcome to distribute copies of it
 under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.13 (i386-unknown-freebsd), 
Copyright 1994 Free Software Foundation, Inc...
(gdb) break snmp_api.c:1006
Breakpoint 1 at 0x96df: file snmp_api.c, line 1006.
(gdb) run -v 1 localhost public
Starting program: /mnt/root/usr/home/gary/ftp/ucd-snmp-3.1/apps/snmpwalk -v 1 localhost public

Breakpoint 1, snmp_send (session=0x65100, pdu=0x65180) at snmp_api.c:1007
1007        if (pdu->version == SNMP_DEFAULT_VERSION){
(gdb) print pdu->version
$1 = -1
(gdb) print session->version
$2 = 0
(gdb) break 1009
Breakpoint 2 at 0x96ef: file snmp_api.c, line 1009.
(gdb) cont
Continuing.

Breakpoint 2, snmp_send (session=0x65100, pdu=0x65180) at snmp_api.c:1010
1010        if (pdu->version == SNMP_DEFAULT_VERSION){
(gdb) print pdu->version
$3 = 0
(gdb) print session->version
$4 = 0
(gdb) s
1011            fprintf(stderr, "No version specified\n");
(gdb) 
1013            return 0;
(gdb) 
No version specified
1068                    snmp_errno = SNMPERR_BAD_ADDRESS;

So, you see, GDB says that pdu->version does NOT equal
SNMP_DEFAULT_VERSION. I guess it would have tracked down the problem
quicker, but I STILL don't like gdb :-)

I guess it comes from a time when I tried (and NEARLY suceeded) in
porting the FreeBSD kernel to another machine ... printf was all I had
:-)

> I'd do this differently in gdb.  Personally, I'd look at the code that
> was generated.  Your code won't look like this, of course, because
> this code works.  But you can see a few things:

Only if you read 80x86, which I don't, and probably never will. I've
been corrupted by a RISC processor, and hope never to have to touch a
CISC assembler ever again :-) I know (or used to) 6502 and 68000, and
that's plenty CISC to last enough a lifetime :-)

[SNIP]

> Reading assembler is tough, of course, but there are other ways.  In
> any case, you save a lot by doing it this way rather than going and
> editing and recompiling possibly dozens of times.

Hmm. Maybe. Call me stoopid, but I still like my printf's thankyou :-)

Gary
--
Gary Palmer                                          FreeBSD Core Team Member
FreeBSD: Turning PC's into workstations. See http://www.FreeBSD.ORG/ for info



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2951.833410814>