GDB可以正确解析C风格的十六进制浮点数吗?

时间:2015-04-24 11:52:35

标签: c floating-point gdb

我无法让GDB正确打印一些C风格的十六进制浮点数,请参阅:

  <!DOCTYPE html>   <html> <head>   <title>Import&bull;io
 Example</title>   <script
 src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
 <!-- 1. Include the client library -->   <script
 src="https://cdn.import.io/js/2.0.0/importio.js"></script>

 <!-- 2. Configure the library -->   <script type="text/javascript">
     importio.init({
       "auth": {
        "userGuid": "XXX",
         "apiKey": "XXX"
       },
       "host": "import.io"
     });

     // Data and done callbacks
     var dataCallback = function(data) {
       console.log("Data received", data);
       for (var i = 0; i < data.length; i++) {
        var d = data[i];        for (var k in d.data) {
          document.write("<i>" + k + "</i>: " + d.data[k] + "<br />");      }       document.write("<hr>");       }
     }
     var doneCallback = function(data) {
       console.log("Done, all data:", data);
       document.write("<b>Done</b><hr>");
     }

 // 3. Do the query (when the function is called)
     var doQuery = function() {
       // Query for tile Magic Api
       importio.query({
         "connectorGuids": [
           "a362c175-e265-4f96-867c-5610686bbb21"
         ],
         "input": {
           "webpage/url": "http://www.davy.ie/markets-and-share-prices/iseq"
         }
       }, { "data": dataCallback, "done": doneCallback });
     }   </script>   <body>
     <button onclick="doQuery()">Query</button>   </body> </html>

此处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 应为$1,但我的GDB似乎将0.625视为十进制0xa.0p,并随后添加10。 我要求GDB打印出什么问题? 我找不到任何关于GDB如何处理十六进制浮点数的相关文档。

1 个答案:

答案 0 :(得分:3)

  

我要求GDB打印的内容有什么问题?

显然这是gdb的错误。

带有负指数的十六进制浮点常量使用gdb给出错误的结果。

我在Linux上尝试了最新的源代码版本gdb 7。9(2015年2月20日),支持带正指数的十六进制浮点常量:

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

但如果指数是负数,则结果是错误的:

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

正确和预期的结果是0.031250