2017-07-28 90 views

回答

1

看起来GDB没有访问合适的调试信息的权限。其结果是,它假定sqrt是返回int功能:

(gdb) ptype sqrt 
type = int() 

您可以使用一个投来告诉GDB正确的类型:

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

或者你可以加载适当的调试信息。

+0

尽管我使用https://stackoverflow.com/questions/5122570/why-does-gdb-evaluate-sqrt3-to-0复制了该帖子,但该帖子接受的答案(使用__sqrt)不适用于-1.0:它返回-165394784。 Florian Weimer的答案适用于我。 –