gdb不会将sqrt(-1.0)打印为NaN

时间:2017-07-28 15:47:24

标签: gdb

我检查了sqrt(-1.0)是否返回NaN(http://en.cppreference.com/w/c/numeric/math/sqrt)。在gdb中,它不返回NaN

(gdb) p/x sqrt(-1.0)
$10 = 0xe53a86a0
(gdb) p sqrt(-1.0)
$11 = -449149280

GDB是否会调用不同的sqrt?我使用gdb 7.6

1 个答案:

答案 0 :(得分:1)

看起来GDB无法访问合适的调试信息。因此,它假定sqrt是一个返回int的函数:

(gdb) ptype sqrt
type = int ()

您可以使用强制转换来告诉GDB正确的类型:

(gdb) print ((double (*)(double))sqrt)(2)
$1 = 1.4142135623730951

或者您可以加载合适的调试信息。