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

  • 本文关键字:打印 NaN sqrt gdb 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

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

(gdb) ptype sqrt
type = int ()

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

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

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

最新更新