c - 使用 valgrind 的 C 程序浮点陷阱

标签 c valgrind nan floating-point-exceptions

我正在尝试找出如何找到用 C 编写的模拟代码生成 NaN 的确切位置。 我在 Debian squeeze 上使用纯 C89(但我可以转移到 C99/C11)和 gcc 4.4.5。

显然有一个 patch对于应该能够执行此检查的 valgrind。 不幸的是,它不包含在 Debian 分发的二进制文件中。 事实上,尝试编译 vanilla valgrind 加上 exp-floattrap 也不起作用(它似乎不包含在最终的可执行文件中)。

您是否继续在 C 源代码中查找此类错误的来源?

感谢您的帮助。

最佳答案

我承认我根本不使用 valgrind,只是因为我不需要它,但是如果您要查找的只是单个变量设置为 NaN 的情况,您是否可以不使用GDB(或类似的),并为变量设置一个观察点,如:

watch var==NaN

这让您知道一个变量在什么时候变为 NaN,如果这不是有罪操作本身,而是一个返回值,您可以将自己的一个函数移到有罪链上,并在该函数中设置一个观察点,依此类推,直到您看到错误。

希望对您有所帮助:)

关于c - 使用 valgrind 的 C 程序浮点陷阱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11674985/

相关文章:

c - 使用 C 例程和 openssl dgst、rsautl 命令时的不同签名

c - 为什么 Valgrind 会清理我的输入文本文件?

c++ - Valgrind:有条件的跳跃或移动取决于未初始化的值

matlab - 根据 NaN 值切割向量

javascript - 来自 Javascript 的 C 中的 Emscripten OOB 异常

C- 信号量 sem_getvalue 没有返回我所期望的?

valgrind - Callgrind 输出不包括函数调用

ruby - 具有 NaN 值的变量在 Ruby 中不等于自身

c++ - NaN 有 2 种 : signaling_NaN, Quiet_NaN,还有... NAN 本身?

c - FFI 导入的 MPI 常量的 GHCi 链接器错误(通过 c2hs)