j.b.w at gmx dot ch
2012-10-23 21:28:07 UTC
http://sourceware.org/bugzilla/show_bug.cgi?id=14757
Bug #: 14757
Summary: Print of expressions with no debug information gives
wrong results
Product: gdb
Version: 7.4
Status: NEW
Severity: normal
Priority: P2
Component: gdb
AssignedTo: ***@sourceware.org
ReportedBy: ***@gmx.ch
Classification: Unclassified
Created attachment 6696
--> http://sourceware.org/bugzilla/attachment.cgi?id=6696
Example program showing different types of functions
When I print expressions involving functions for which no debug information is
available, the result is wrong.
Consider the attached example program, and the following gdb session:
(gdb) print sqrt
$1 = {<text variable, no debug info>} 0x7ffff7879010 <sqrt>
(gdb) print std::sqrt
No symbol "sqrt" in namespace "std".
(gdb) print mysqrt
$2 = {double (double)} 0x40083c <mysqrt(double)>
(gdb) print sqrt(0.5)
$3 = 0
(gdb) print std::sqrt(0.5)
No symbol "sqrt" in namespace "std".
(gdb) print mysqrt(0.5)
$4 = 0.25
I would expect the call "print sqrt(0.5)" to give an error message indicating
that the expression cannot be printed due to missing debug information. Giving
a wrong result without any indication that something is wrong is... wrong.
Also, I'm puzzled as to why "print std::sqrt(0.5)" fails, given that the
program compiles (so std::sqrt apparently exists).
There is a related StackOverflow question at
http://stackoverflow.com/questions/5122570/why-does-gdb-evaluate-sqrt3-to-0
Bug #: 14757
Summary: Print of expressions with no debug information gives
wrong results
Product: gdb
Version: 7.4
Status: NEW
Severity: normal
Priority: P2
Component: gdb
AssignedTo: ***@sourceware.org
ReportedBy: ***@gmx.ch
Classification: Unclassified
Created attachment 6696
--> http://sourceware.org/bugzilla/attachment.cgi?id=6696
Example program showing different types of functions
When I print expressions involving functions for which no debug information is
available, the result is wrong.
Consider the attached example program, and the following gdb session:
(gdb) print sqrt
$1 = {<text variable, no debug info>} 0x7ffff7879010 <sqrt>
(gdb) print std::sqrt
No symbol "sqrt" in namespace "std".
(gdb) print mysqrt
$2 = {double (double)} 0x40083c <mysqrt(double)>
(gdb) print sqrt(0.5)
$3 = 0
(gdb) print std::sqrt(0.5)
No symbol "sqrt" in namespace "std".
(gdb) print mysqrt(0.5)
$4 = 0.25
I would expect the call "print sqrt(0.5)" to give an error message indicating
that the expression cannot be printed due to missing debug information. Giving
a wrong result without any indication that something is wrong is... wrong.
Also, I'm puzzled as to why "print std::sqrt(0.5)" fails, given that the
program compiles (so std::sqrt apparently exists).
There is a related StackOverflow question at
http://stackoverflow.com/questions/5122570/why-does-gdb-evaluate-sqrt3-to-0
--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.