gdb不打印sqrt(-1.0)作为NaN
问题描述:
我检查了sqrt(-1.0)是否返回NaN(http://en.cppreference.com/w/c/numeric/math/sqrt)。在gdb中,它不返回NaNgdb不打印sqrt(-1.0)作为NaN
(gdb) p/x sqrt(-1.0)
$10 = 0xe53a86a0
(gdb) p sqrt(-1.0)
$11 = -449149280
GDB调用不同的sqrt吗?我使用gdb 7.6
答
看起来GDB没有访问合适的调试信息的权限。其结果是,它假定sqrt
是返回int
功能:
(gdb) ptype sqrt
type = int()
您可以使用一个投来告诉GDB正确的类型:
(gdb) print ((double (*)(double))sqrt)(2)
$1 = 1.4142135623730951
或者你可以加载适当的调试信息。
尽管我使用https://stackoverflow.com/questions/5122570/why-does-gdb-evaluate-sqrt3-to-0复制了该帖子,但该帖子接受的答案(使用__sqrt)不适用于-1.0:它返回-165394784。 Florian Weimer的答案适用于我。 –