2015-04-24 4 views
6

Ich kann nicht verwalten GDB drucken correcly einige C-Stil hexadezimal Gleitkommazahlen zu machen, finden Sie unter:Kann GDB C-artige hexadezimale Gleitkommazahlen korrekt analysieren?

GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1 
Copyright (C) 2014 Free Software Foundation, Inc. 
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> 
This is free software: you are free to change and redistribute it. 
There is NO WARRANTY, to the extent permitted by law. Type "show copying" 
and "show warranty" for details. 
This GDB was configured as "x86_64-linux-gnu". 
Type "show configuration" for configuration details. 
For bug reporting instructions, please see: 
<http://www.gnu.org/software/gdb/bugs/>. 
Find the GDB manual and other documentation resources online at: 
<http://www.gnu.org/software/gdb/documentation/>. 
For help, type "help". 
Type "apropos word" to search for commands related to "word". 
(gdb) p 0xa.0p-4 
$1 = 6 

Hier $10.625 sein sollte, aber scheint meine GDB 0xa.0p als Dezimalzahl 10 und macht eine nachträgliche Zugabe zu sehen, mit -4. Was stimmt nicht mit dem, was ich GDB zum Ausdrucken? Ich konnte keine relevante Dokumentation darüber finden, wie GDB hexadezimale Gleitkommazahlen behandelt.

Antwort

3

Was stimmt nicht mit dem, was ich von GDB zum Drucken anfordere?

Anscheinend ist es ein Fehler mit gdb.

Hexadezimale Gleitkommakonstanten mit einem negativen Exponenten ergeben mit gdb ein falsches Ergebnis.

ich mit dem neuesten Source-Version GDB versucht, 7.9 (20. Februar 2015) unter Linux und hexadezimalen Gleitkomma-Konstanten mit einem positiven Exponenten werden unterstützt:

(gdb) p/f 0x00.1p0 
$1 = 0.0625 
(gdb) p/f 0x00.1p1 
$2 = 0.125 

aber wenn der Exponent negativ ist, dann ist das Ergebnis falsch ist:

(gdb) p/f 0x00.1p-1 
$3 = -0.9375 

Das rechte und das erwartete Ergebnis 0.031250 ist.

+0

@hdl Ich kann keinen offenen Fehler auf gdb Bugzilla finden https://www.sourceware.org/bugzilla möchten Sie einen öffnen? Ansonsten kann ich es selbst ablegen. – ouah

+0

Für die "Ungültige Nummer" Fehler, siehe http://StackOverflow.com/Questions/24865689/change-decimal-separator-in-Gdb#comment38649027_24865689 – hdl

+0

@HDL guten Punkt, ich entferne diesen Punkt meiner Antwort, um unnötiges Rauschen zu vermeiden – ouah