Thread View: gnu.gdb.bug
1 messages
1 total messages
Started by James R. Van Zandt
Wed, 12 Jun 2002 19:41
printing: functions returning double
Author: James R. Van Zandt
Date: Wed, 12 Jun 2002 19:41
Date: Wed, 12 Jun 2002 19:41
60 lines
2621 bytes
2621 bytes
I've (re)discovered that gdb often can't print the value of a function
that returns double. For example, with this code:
#include <stdio.h>
#include <math.h>
double foo(double x) { return x*x; }
int main() {
extern double sin(double);
printf("%f %f %f\n",foo(2.1), sqrt(2.1), sin(2.1));
}
gdb knows the return value of foo() but not sqrt() or sin():
GNU gdb 5.1.1
Copyright 2002 Free Software Foundation, Inc.
...
This GDB was configured as "i386-linux"...
(gdb) break main
Breakpoint 1 at 0x80484da: file foo.c, line 8.
(gdb) r
Starting program: /home/jrv/proj/rocket/foo
Breakpoint 1, main () at foo.c:8
(gdb) n
4.410000 1.449138 0.863209
(gdb) p foo(2.1)
$1 = 4.4100000000000001
(gdb) p sqrt(2.1)
$2 = 288
(gdb) p sin(2.1)
$3 = 14624
(gdb) ptype foo
type = double (double)
(gdb) ptype sin
type = int ()
(gdb) ptype sqrt
type = int ()
(gdb)
I think this should be discussed in the documentation.
What's the right way to handle this, though? Debian package libc6-dbg
is described as "GNU C Library: Libraries with debugging symbols". I
tried installing that and running my program with
(gdb) run LD_LIBRARY_PATH=/usr/lib/debug
but that didn't help. How should this work?
Is there a workaround? E.g. a way to tell gdb with a keyboard command
that a given function returns a double? It would be nice if you could
just point gdb to the appropriate header file.
Again, I think this ought to be discussed in the docs. I'd be willing
to prepare a patch if I knew what to write.
- Jim Van Zandt
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads