2015-04-24 10 views
6

nie uda się dokonać wydruku GDB correcly kilka liczb zmiennoprzecinkowych w stylu C szesnastkowym, patrz:Czy GDB może poprawnie korygować szesnastkowe liczby zmiennoprzecinkowe w stylu C?

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 

Tutaj $1 powinny być 0.625 ale mój GDB zdaje się widzieć 0xa.0p jako dziesiętnych 10 i robi kolejny dodatek z -4. Co jest nie tak z tym, co proszę GDB o wydrukowanie? Nie mogłem znaleźć żadnej odpowiedniej dokumentacji na temat tego, w jaki sposób GDB obsługuje szesnastkową pływaka.

Odpowiedz

3

Co jest nie tak z tym, co proszę GDB o wydrukowanie?

Podobno jest to błąd z gdb.

Szesnastkowe stałe zmiennoprzecinkowe z ujemnym wykładnikiem dają zły wynik z gdb.

Próbowałem z najnowszej gdb uwalnianiu źródło 7,9 (20 lutego 2015) w systemie Linux i szesnastkowym pływających stałych punktów z dodatnim wykładnikiem są obsługiwane:

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

ale jeśli wykładnik jest ujemny, wtedy wynik jest błędny:

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

Prawidłowy i oczekiwany wynik to 0.031250.

+0

@hdl Nie mogę znaleźć żadnego otwartego błędu na gdb Bugzilla https://www.sourceware.org/bugzilla czy chciałbyś otworzyć? W przeciwnym razie mogę to zrobić samodzielnie. – ouah

+0

Dla błędu "Nieprawidłowa liczba", zobacz http://stackoverflow.com/questions/24865689/change-decimal-separator-in-gdb#comment38649027_24865689 – hdl

+0

@HDL dobry punkt, usunąłem ten punkt mojej odpowiedzi, aby uniknąć niepotrzebnego hałasu – ouah

Powiązane problemy