【问题标题】:Stopping the debugger when a NaN floating point number is produced产生 NaN 浮点数时停止调试器
【发布时间】:2011-07-20 14:56:33
【问题描述】:

我有一个 C++ 程序。在程序中的某处(难以重现,但可重现)计算会导致浮点蜂设置为 NaN。由于涉及 NaN 的浮点运算会导致 NaN,因此传播速度很快。

有什么方法可以设置编译器 (gcc 4.4) 或调试器 (gdb) 在浮点运算导致 NaN 时停止?这将非常有用。

谢谢! 内森

PS:这可能很重要:我在 ubuntu linux 10.10 下工作。

【问题讨论】:

标签: c++ gdb floating-point nan


【解决方案1】:

您可以启用浮点异常 - 请参阅 glibc Control Functions - 然后当您的 NaN 值生成时,您将获得一个 SIGFPE

【讨论】:

  • feenableexcept(FE_INVALID | FE_OVERFLOW);有用吗,谢谢!
  • 答案是正确的。但是在 OSX 上,你需要像 www-personal.umich.edu/~williams/archive/computation/… 这样的东西,因为 feenableexcept() 不可用。
  • 在使用feenableexcept()时不要忘记添加#include
猜你喜欢
  • 2018-02-20
  • 2020-08-11
  • 2011-11-04
  • 2012-03-09
  • 1970-01-01
  • 1970-01-01
  • 2013-05-05
  • 2014-01-16
  • 2015-02-25
相关资源
最近更新 更多